【发布时间】:2011-09-30 23:59:12
【问题描述】:
我想为我的 ScrollViewer 添加一个边框。仅当 ScrollViewer 的 ScrollBar 可见时才显示边框(VerticalScrollBarVisibility 设置为“Auto”)
谢谢!
【问题讨论】:
标签: wpf wpf-controls binding scrollviewer
我想为我的 ScrollViewer 添加一个边框。仅当 ScrollViewer 的 ScrollBar 可见时才显示边框(VerticalScrollBarVisibility 设置为“Auto”)
谢谢!
【问题讨论】:
标签: wpf wpf-controls binding scrollviewer
您可以使用样式和触发器来执行此操作,如下所示:
<Border BorderBrush="Black">
<Border.Style>
<Style>
<Setter Property="Border.Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=theScrollViewer, Path=ComputedVerticalScrollBarVisibility}" Value="Collapsed">
<Setter Property="Border.Visibility" Value="Collapsed" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<ScrollViewer Name="theScrollViewer">
</ScrollViewer>
</Border>
【讨论】:
使用Binding 和Converter。
public sealed class VisibilityToBorderThicknessConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
try
{
var flag = (Visibility)value;
if (flag == Visibility.Visible)
return new Thickness(0);
else
return new Thickness(1);
}
catch
{
return new Thickness(0);
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
比你的 xaml:
<ScrollViewer Name="blah">
<Border BorderThickness="{Binding ElementName=blah, Path=VerticalScrollBarVisibility , Converter={StaticResources VisibilityToBorder}}">
</ScrollViewer>
不要忘记将您的转换器添加到资源中!
GL&HF
【讨论】: