我有一个StackPanel
我只想在SomeTabControl.SelectedItem != null
. 如何在 WPF 绑定中执行此操作?
问问题
5123 次
2 回答
13
您可以使用样式和触发器在不使用转换器的情况下完成此操作:
<StackPanel>
<StackPanel.Style>
<Style TargetType="{x:Type StackPanel}">
<Setter Property="Visibility" Value="Visible" />
<Style.Triggers>
<DataTrigger
Binding="{Binding SelectedItem,ElementName=tabControl1}"
Value="{x:Null}">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
<Style.Triggers>
</Style>
</StackPanel.Style>
</StackPanel>
此示例默认显示 StackPanel,但当 tabControl1 上的 SelectedItem 为空时将其隐藏。
于 2009-07-21T11:27:42.293 回答
5
创建一个将可空值转换为 System.Windows.Visibility 值的转换器,并将其用于您的绑定。
例如:
<StackPanel x:Name="myPanel" Visibility="{Binding Path=SelectedItem, Mode=OneWay, ElementName=SomeTabControl, Converter={StaticResource visibilityConverter}}" />
转换器类的代码:
public class VisibilityConverter : IValueConverter
{
#region [ IValueConverter ]
public object Convert( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture )
{
if( value == null )
return System.Windows.Visibility.Collapsed;
return System.Windows.Visibility.Visible;
}
public object ConvertBack( object value, Type targetType, object parameter, System.Globalization.CultureInfo culture )
{
throw new NotSupportedException( );
}
#endregion
}
PS 这假设在您的控件的 XAML 中有一个名为visibilityConverter的静态资源。
于 2009-07-21T11:03:15.840 回答