2016-04-16 135 views
0

我想綁定scrollBarVisibilitycheckBox屬性IsChecked。 如果IsChecked爲真scrollBarVisibility需要可見。綁定複選框到ScrollBar.Visibility

XAML:

<Controls:MetroWindow.Resources> 
    <local:Nustatymai x:Key="checkBox_keitejas" /> 
</Controls:MetroWindow.Resources> 
<!-- ..... --> 
<ScrollViewer Name="tempimas" IsEnabled="True" VerticalScrollBarVisibility="Disabled" 
       Height="795" HorizontalScrollBarVisibility="{Binding IsChecked, ElementName=check1, 
       Converter={StaticResource checkBox_keitejas}}" > 
</ScrollViewer> 
<!-- ..... --> 
<WrapPanel> 
    <TextBlock>Rodyti apatini scrollBar</TextBlock> 
    <CheckBox Name="check1" IsChecked="True"/> 
</WrapPanel> 

C#:

class Nustatymai : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if ((bool)value == true) 
      return ScrollBarVisibility.Visible; 
     else 
      return ScrollBarVisibility.Hidden; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

現在這個代碼是不是爲我工作,我需要你的幫助來解決吧!

+0

即使滾動條不可見,滾動條也不會顯示/隱藏或內容仍然可以滾動? – dkozl

回答

0

你的代碼實際工作,我認爲你有一個scrollviewer的高度問題。請檢查窗口高度。

1

你不需要轉換器來做到這一點。您可以使用DataTrigger:

<ScrollViewer Name="tempimas" IsEnabled="True" VerticalScrollBarVisibility="Visible" 
       Height="100"> 
       <ScrollViewer.Style> 
        <Style TargetType="ScrollViewer"> 
         <Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding ElementName=check1, Path=IsChecked}" Value="True"> 
           <Setter Property="HorizontalScrollBarVisibility" Value="Visible" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </ScrollViewer.Style> 
      </ScrollViewer> 
      <WrapPanel> 
       <TextBlock>Rodyti apatini scrollBar</TextBlock> 
       <CheckBox Name="check1" IsChecked="True"/> 
      </WrapPanel>