Condividi tramite


MenuScrollingVisibilityConverter Classe

Definizione

Rappresenta un convertitore che esegue l'associazione a dati per gestire la visibilità di pulsanti di ripetizione nei menu di scorrimento.

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
Ereditarietà
MenuScrollingVisibilityConverter
Implementazioni

Esempio

Nell'esempio seguente viene utilizzato l'oggetto MenuScrollingVisibilityConverter in ControlTemplate di un ScrollViewer oggetto per un menu.

Per un esempio completo, vedere Applicazione di stili con ControlTemplates Sample.For a complete sample, see 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>

Commenti

Determina MenuScrollingVisibilityConverter se un menu deve visualizzare i pulsanti di ripetizione quando un menu contiene troppi elementi da adattare contemporaneamente allo schermo. Usare il convertitore con un MultiBinding oggetto con quattro associazioni. Le quattro associazioni devono essere relative alle proprietà dell'elemento padre ScrollViewer: se le voci di menu sono organizzate verticalmente (ovvero l'impostazione predefinita per i menu), associare a ComputedVerticalScrollBarVisibility, VerticalOffset, ExtentHeighte ViewportHeight. Se le voci di menu sono organizzate orizzontalmente, associare a ComputedHorizontalScrollBarVisibility, HorizontalOffset, ExtentWidthe ViewportWidth.

Impostare MultiBinding.ConverterParameter su 0 o 100. Il valore viene considerato come percentuale e determina se un pulsante è nascosto quando si ScrollViewer trova nella posizione specificata. Quando l'oggetto ScrollViewer si trova in alto, la posizione di ScrollViewer è 0% e il pulsante superiore è nascosto. Quando l'oggetto ScrollViewer si trova nella parte inferiore, la posizione di ScrollViewer è 100% e il pulsante inferiore è nascosto.

Costruttori

MenuScrollingVisibilityConverter()

Inizializza una nuova istanza della classe MenuScrollingVisibilityConverter.

Metodi

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

Viene chiamato durante lo spostamento di un valore da un'origine a una destinazione.

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

Non supportata.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a