MenuScrollingVisibilityConverter Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt einen Datenbindungskonverter dar, der die Sichtbarkeit von wiederholten Schaltflächen in Menüs mit Bildlauf behandelt.
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
- Vererbung
-
MenuScrollingVisibilityConverter
- Implementiert
Beispiele
Im folgenden Beispiel wird das MenuScrollingVisibilityConverter in ControlTemplate einem ScrollViewer Menü verwendet.
Ein vollständiges Beispiel finden Sie unter Formatieren mit ControlTemplates-Beispiel.
<!--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>
Hinweise
Dies MenuScrollingVisibilityConverter bestimmt, ob ein Menü die Wiederholungsschaltflächen anzeigen soll, wenn ein Menü zu viele Elemente aufweist, die auf dem Bildschirm gleichzeitig passen. Verwenden Sie den Konverter mit vier MultiBinding Bindungen. Die vier Bindungen sollten eigenschaften des übergeordneten ScrollViewerElements sein: Wenn die Menüelemente vertikal angeordnet sind (was die Standardeinstellung für Menüs ist), binden Sie an ComputedVerticalScrollBarVisibility, VerticalOffsetExtentHeight, und .ViewportHeight Wenn die Menüelemente horizontal organisiert werden, binden Sie an ComputedHorizontalScrollBarVisibility, HorizontalOffsetExtentWidthund ViewportWidth.
Auf 0 oder 100 festgelegt MultiBinding.ConverterParameter . Der Wert wird als Prozentsatz behandelt und bestimmt, ob eine Schaltfläche ausgeblendet wird, wenn dies ScrollViewer an der angegebenen Position ist. ScrollViewer Wenn sich die Position oben befindet, ist die Position ScrollViewer 0% und die obere Schaltfläche ausgeblendet. ScrollViewer Wenn sich der Bereich unten befindet, ist die Position der ScrollViewer 100 % und die untere Schaltfläche ausgeblendet.
Konstruktoren
MenuScrollingVisibilityConverter() |
Initialisiert eine neue Instanz der MenuScrollingVisibilityConverter-Klasse. |
Methoden
Convert(Object[], Type, Object, CultureInfo) |
Wird aufgerufen, wenn ein Wert von einer Quelle zu einem Ziel verschoben wird. |
ConvertBack(Object, Type[], Object, CultureInfo) |
Wird nicht unterstützt. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |