MenuScrollingVisibilityConverter Класс

Определение

Представляет преобразователь привязки данных для обработки видимости кнопок повторения в меню прокрутки.Represents a data-binding converter to handle the visibility of repeat buttons in scrolling menus.

public ref class MenuScrollingVisibilityConverter sealed : System::Windows::Data::IMultiValueConverter
public sealed class MenuScrollingVisibilityConverter : System.Windows.Data.IMultiValueConverter
type MenuScrollingVisibilityConverter = class
    interface IMultiValueConverter
Public NotInheritable Class MenuScrollingVisibilityConverter
Implements IMultiValueConverter
Наследование
MenuScrollingVisibilityConverter
Реализации

Примеры

В следующем примере используется MenuScrollingVisibilityConverter в ControlTemplate из ScrollViewer для меню.The following example uses the MenuScrollingVisibilityConverter in the ControlTemplate of a ScrollViewer for a menu. Полный пример см. в разделе Пример стилизации с помощью ControlTemplate.For the complete example, see Styling with ControlTemplates Sample.

<!--ScrollViewer for a MenuItem-->
<MenuScrollingVisibilityConverter x:Key="MenuScrollingVisibilityConverter" />

<Style x:Key="MenuScrollViewer"
       TargetType="{x:Type ScrollViewer}"
       BasedOn="{x:Null}">
  <Setter Property="HorizontalScrollBarVisibility"
          Value="Hidden" />
  <Setter Property="VerticalScrollBarVisibility"
          Value="Auto" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type ScrollViewer}">
        <Grid SnapsToDevicePixels="True">
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
          </Grid.ColumnDefinitions>
          <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
          </Grid.RowDefinitions>
          <Border Grid.Row="1"
                  Grid.Column="0">
            <ScrollContentPresenter Margin="{TemplateBinding Padding}" />
          </Border>
          <RepeatButton Style="{StaticResource MenuScrollButton}"
                        Grid.Row="0"
                        Grid.Column="0"
                        Command="{x:Static ScrollBar.LineUpCommand}"
                        CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                        Focusable="False">
            <RepeatButton.Visibility>
              <MultiBinding FallbackValue="Visibility.Collapsed"
                            Converter="{StaticResource MenuScrollingVisibilityConverter}"
                            ConverterParameter="0">
                <Binding RelativeSource="{RelativeSource TemplatedParent}"
                         Path="ComputedVerticalScrollBarVisibility" />
                <Binding RelativeSource="{RelativeSource TemplatedParent}"
                         Path="VerticalOffset" />
                <Binding RelativeSource="{RelativeSource TemplatedParent}"
                         Path="ExtentHeight" />
                <Binding RelativeSource="{RelativeSource TemplatedParent}"
                         Path="ViewportHeight" />
              </MultiBinding>
            </RepeatButton.Visibility>
            <Path Fill="{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"
                  Data="{StaticResource UpArrow}" />
          </RepeatButton>
          <RepeatButton Style="{StaticResource MenuScrollButton}"
                        Grid.Row="2"
                        Grid.Column="0"
                        Command="{x:Static ScrollBar.LineDownCommand}"
                        CommandTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                        Focusable="False">
            <RepeatButton.Visibility>
              <MultiBinding FallbackValue="Visibility.Collapsed"
                            Converter="{StaticResource MenuScrollingVisibilityConverter}"
                            ConverterParameter="100">
                <Binding RelativeSource="{RelativeSource TemplatedParent}"
                         Path="ComputedVerticalScrollBarVisibility" />
                <Binding RelativeSource="{RelativeSource TemplatedParent}"
                         Path="VerticalOffset" />
                <Binding RelativeSource="{RelativeSource TemplatedParent}"
                         Path="ExtentHeight" />
                <Binding RelativeSource="{RelativeSource TemplatedParent}"
                         Path="ViewportHeight" />
              </MultiBinding>
            </RepeatButton.Visibility>
            <Path Fill="{DynamicResource {x:Static SystemColors.MenuTextBrushKey}}"
                  Data="{StaticResource DownArrow}" />
          </RepeatButton>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

Комментарии

@No__t-0 определяет, должны ли в меню отображаться кнопки Repeat, если в меню слишком много элементов для размещения на экране.The MenuScrollingVisibilityConverter determines whether a menu should display the repeat buttons when a menu has too many items to fit on the screen at once. Используйте преобразователь с MultiBinding с четырьмя привязками.Use the converter with a MultiBinding that has four bindings. Четыре привязки должны быть свойствами родительского ScrollViewer: Если пункты меню организованы вертикально (то есть по умолчанию для меню), привяжите к ComputedVerticalScrollBarVisibility, VerticalOffset, ExtentHeight и ViewportHeight.The four bindings should be to properties of the parent ScrollViewer: If the menu items are organized vertically (which is the default for menus), bind to ComputedVerticalScrollBarVisibility, VerticalOffset, ExtentHeight, and ViewportHeight. Если пункты меню упорядочены горизонтально, привяжите к ComputedHorizontalScrollBarVisibility, HorizontalOffset, ExtentWidth и ViewportWidth.If the menu items are organized horizontally, bind to ComputedHorizontalScrollBarVisibility, HorizontalOffset, ExtentWidth, and ViewportWidth.

Установите MultiBinding.ConverterParameter в значение 0 или 100.Set MultiBinding.ConverterParameter to 0 or 100. Значение считается процентным и определяет, скрыта ли кнопка, когда ScrollViewer находится в указанном месте.The value is treated as a percentage and determines whether a button is hidden when the ScrollViewer is at the given location. Когда ScrollViewer находится вверху, позиции ScrollViewer равно 0%, а кнопка Top скрыта.When the ScrollViewer is at the top, the position of the ScrollViewer is 0% and the top button is hidden. Если ScrollViewer находится внизу, расположение ScrollViewer составляет 100%, а кнопка снизу скрыта.When the ScrollViewer is at the bottom, the position of the ScrollViewer is 100% and the bottom button is hidden.

Конструкторы

MenuScrollingVisibilityConverter()

Инициализирует новый экземпляр класса MenuScrollingVisibilityConverter.Initializes a new instance of the MenuScrollingVisibilityConverter class.

Методы

Convert(Object[], Type, Object, CultureInfo)

Вызывается при перемещении значения из источника в конечный объект.Called when moving a value from a source to a target.

ConvertBack(Object, Type[], Object, CultureInfo)

Не поддерживается.Not supported.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Применяется к