MenuScrollingVisibilityConverter Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa um conversor de ligação de dados para gerir a visibilidade de botões de repetição em menus de scroll.
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
- Herança
-
MenuScrollingVisibilityConverter
- Implementações
Exemplos
O exemplo seguinte usa o MenuScrollingVisibilityConverter in ControlTemplate of a ScrollViewer para um menu.
Para um exemplo completo, veja Exemplo de Estilização com Modelos de Control.
<!--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>
Observações
Determina MenuScrollingVisibilityConverter se um menu deve mostrar os botões de repetição quando um menu tem demasiados itens para caber no ecrã ao mesmo tempo. Usa o conversor com quatro MultiBinding ligações. As quatro ligações devem ser para propriedades do pai ScrollViewer: Se os itens do menu estiverem organizados verticalmente (que é o padrão para menus), atribuir a ComputedVerticalScrollBarVisibility, VerticalOffset, ExtentHeight, e ViewportHeight. Se os itens do menu estiverem organizados horizontalmente, associe a ComputedHorizontalScrollBarVisibility, HorizontalOffset, ExtentWidth, e ViewportWidth.
Define MultiBinding.ConverterParameter para 0 ou 100. O valor é tratado como uma percentagem e determina se um botão está escondido quando está ScrollViewer no local indicado. Quando o ScrollViewer está no topo, a posição do ScrollViewer é 0% e o botão superior está oculto. Quando está ScrollViewer na parte inferior, a posição é ScrollViewer 100% e o botão inferior está escondido.
Construtores
| Name | Description |
|---|---|
| MenuScrollingVisibilityConverter() |
Inicializa uma nova instância da MenuScrollingVisibilityConverter classe. |
Métodos
| Name | Description |
|---|---|
| Convert(Object[], Type, Object, CultureInfo) |
Chamado ao mover um valor de uma fonte para um alvo. |
| ConvertBack(Object, Type[], Object, CultureInfo) |
Não suportado. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |