Aracılığıyla paylaş


MenuScrollingVisibilityConverter Sınıf

Tanım

Kaydırma menülerindeki yineleme düğmelerinin görünürlüğünü işlemek için bir veri bağlama dönüştürücüyü temsil eder.

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
Devralma
MenuScrollingVisibilityConverter
Uygulamalar

Örnekler

Aşağıdaki örnek, bir menü için içindeki ControlTemplate ScrollViewer öğesini kullanırMenuScrollingVisibilityConverter.

Tam bir örnek için bkz . ControlTemplates Örneği ile Stil Oluşturma.

<!--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>

Açıklamalar

, MenuScrollingVisibilityConverter bir menüde aynı anda ekrana sığamayacak kadar çok öğe olduğunda menünün yineleme düğmelerini görüntüleyip görüntülemeyeceğini belirler. Dört bağlaması olan bir MultiBinding ile dönüştürücü kullanın. Dört bağlama üst ScrollVieweröğenin özelliklerine yönelik olmalıdır: Menü öğeleri dikey olarak düzenlenmişse (menüler için varsayılan değerdir), , , VerticalOffsetExtentHeightve ViewportHeight'ye ComputedVerticalScrollBarVisibilitybağlayın. Menü öğeleri yatay olarak düzenlenmişse , , HorizontalOffsetExtentWidthve ViewportWidth'ye ComputedHorizontalScrollBarVisibilitybağlayın.

0 veya 100 olarak ayarlayın MultiBinding.ConverterParameter . Değer yüzde olarak değerlendirilir ve belirtilen konumda olduğunda ScrollViewer bir düğmenin gizlenip gizlenmeyeceğini belirler. ScrollViewer en üstte olduğunda konumu ScrollViewer %0 olur ve üstteki düğme gizlenir. ScrollViewer altta olduğunda konumu ScrollViewer %100 olur ve alttaki düğme gizlenir.

Oluşturucular

MenuScrollingVisibilityConverter()

MenuScrollingVisibilityConverter sınıfının yeni bir örneğini başlatır.

Yöntemler

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

Bir değeri kaynaktan hedefe taşırken çağrılır.

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

Desteklenmez.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır