MenuScrollingVisibilityConverter Klasa

Definicja

Reprezentuje konwerter powiązań danych do obsługi widoczności przycisków powtórzeń w menu przewijania.

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
Dziedziczenie
MenuScrollingVisibilityConverter
Implementuje

Przykłady

W poniższym przykładzie użyto w MenuScrollingVisibilityConverter menu w ControlTemplate elemecie a .ScrollViewer

Aby zapoznać się z kompletnym przykładem, zobacz Styling with ControlTemplates Sample (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>

Uwagi

Określa MenuScrollingVisibilityConverter , czy menu powinno wyświetlać przyciski powtarzania, gdy menu ma zbyt wiele elementów do dopasowania na ekranie jednocześnie. Użyj konwertera z czterema MultiBinding powiązaniami. Cztery powiązania powinny być właściwościami elementu nadrzędnegoScrollViewer: jeśli elementy menu są zorganizowane w pionie (co jest wartością domyślną menu), powiąż z ComputedVerticalScrollBarVisibilityelementami , , VerticalOffsetExtentHeighti ViewportHeight. Jeśli elementy menu są zorganizowane w poziomie, powiąż z ComputedHorizontalScrollBarVisibilityelementami , HorizontalOffset, ExtentWidthi ViewportWidth.

Ustaw MultiBinding.ConverterParameter wartość 0 lub 100. Wartość jest traktowana jako wartość procentowa i określa, czy przycisk jest ukryty, gdy ScrollViewer znajduje się w danej lokalizacji. Gdy znajduje się ScrollViewer u góry, położenie ScrollViewer elementu wynosi 0%, a górny przycisk jest ukryty. ScrollViewer Gdy znajduje się u dołu, położenie ScrollViewer obiektu wynosi 100%, a dolny przycisk jest ukryty.

Konstruktory

MenuScrollingVisibilityConverter()

Inicjuje nowe wystąpienie klasy MenuScrollingVisibilityConverter.

Metody

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

Wywoływana podczas przenoszenia wartości ze źródła do elementu docelowego.

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

Nieobsługiwane.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy