wpf 数据绑定 IsVisible 到 TabControl.SelectedItem != null
Posted
技术标签:
【中文标题】wpf 数据绑定 IsVisible 到 TabControl.SelectedItem != null【英文标题】:wpf databind IsVisible to TabControl.SelectedItem != null 【发布时间】:2010-11-12 14:38:47 【问题描述】:我有一个StackPanel
,我只想在SomeTabControl.SelectedItem != null
时显示它。如何在 WPF 绑定中执行此操作?
【问题讨论】:
【参考方案1】:创建一个转换器,将一个可为空的值转换为一个 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
附:这假定在您的控件的 XAML 中有一个名为 visibilityConverter 的静态资源。
【讨论】:
您可以使用内置的 BoolToVisiblityConverter 而不是自己编写。 msdn.microsoft.com/en-us/library/… BoolToVisibilityConverter 如何将 !=null 转换为 Visible?如果它是真的或假的,我明白了。但是!= null?【参考方案2】:您可以通过使用样式和触发器在不使用转换器的情况下做到这一点:
<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 为 null 时将其隐藏。
【讨论】:
以上是关于wpf 数据绑定 IsVisible 到 TabControl.SelectedItem != null的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Isvisible Property 的绑定方法?
Xamarin iOS - XAML IsVisible 绑定在 ItemsSource 更改时不会更新