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, um die Sichtbarkeit von Wiederholten Schaltflächen in Bildlaufmenüs zu behandeln.
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 einem ControlTemplate Menü verwendet ScrollViewer .
Ein vollständiges Beispiel finden Sie unter "Formatieren mit 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>
Hinweise
Dies MenuScrollingVisibilityConverter bestimmt, ob ein Menü die Wiederholungsschaltflächen anzeigen soll, wenn ein Menü zu viele Elemente enthält, die gleichzeitig auf den Bildschirm 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 (dies ist die Standardeinstellung für Menüs), binden Sie an ComputedVerticalScrollBarVisibility, VerticalOffset, , ExtentHeightund ViewportHeight. Wenn die Menüelemente horizontal angeordnet sind, binden Sie sie an ComputedHorizontalScrollBarVisibility, HorizontalOffset, , und ExtentWidthViewportWidth.
Auf 0 oder 100 festgelegt MultiBinding.ConverterParameter . Der Wert wird als Prozentsatz behandelt und bestimmt, ob eine Schaltfläche ausgeblendet wird, wenn sich die ScrollViewer Schaltfläche an der angegebenen Position befindet. Wenn sich der ScrollViewer Bereich oben befindet, ist die Position der ScrollViewer 0% und die obere Schaltfläche ausgeblendet. Wenn sich die ScrollViewer Position unten befindet, ist die Position der ScrollViewer 100% und die untere Schaltfläche ausgeblendet.
Konstruktoren
| Name | Beschreibung |
|---|---|
| MenuScrollingVisibilityConverter() |
Initialisiert eine neue Instanz der MenuScrollingVisibilityConverter-Klasse. |
Methoden
| Name | Beschreibung |
|---|---|
| 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 dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |