MenuScrollingVisibilityConverter Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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) |