我有一个这样的 DataGrid:
<DataGrid ItemsSource="{Binding MySource}" SelectedItem="{Binding SelectedItem}" />
和这样的选项卡控件:
<TabControl IsEnabled="{Binding ???}" />
我希望仅在数据网格中选择单个项目时启用 TabControl。如果所选项目为空,或者如果选择了多个项目,则应禁用选项卡控件。
我有一个这样的 DataGrid:
<DataGrid ItemsSource="{Binding MySource}" SelectedItem="{Binding SelectedItem}" />
和这样的选项卡控件:
<TabControl IsEnabled="{Binding ???}" />
我希望仅在数据网格中选择单个项目时启用 TabControl。如果所选项目为空,或者如果选择了多个项目,则应禁用选项卡控件。
定义一个布尔属性并将其绑定到 TabControl 的 IsEnabled 属性。
在 SelectedItem 属性的 Setter 中,根据选项卡控件的 IsEnabled 绑定属性设置 true 或 false 的条件,检查所选项目是否为 null 或项目计数 > 1
数据网格绑定:
<DataGrid ItemsSource="{Binding MySource}" SelectedItem="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
TabControl 绑定:
<TabControl IsEnabled="{Binding IsTabEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Datagrid 的选择项:
Public SelectedItem
{
get
{
}
set
{
if(null == SelectedItem || SelectedItem.count > 1)
IsTabEnabled = false;
}
}
我建议您使用转换器并与元素名称 proeprty 绑定,如下所示。\
命名空间
xmlns:local="clr-namespace:WpfApplication1"
<Window.Resources>
<local:Enabledconverters x:Key="converter"/>
</Window.Resources>
<TextBlock Name="textBlock1" Text="Sample Window" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.ColumnSpan="2" Margin="96,123" />
<ListBox x:Name="list">
</ListBox>
<TabControl x:Name="tab" IsEnabled="{Binding SelectedItem,ElementName=list,Converter={StaticResource converter}}" Grid.Column="1">
<TabItem Header="Test"/>
<TabItem Header="Test"/>
<TabItem Header="Test"/>
</TabControl>
转换器代码。
public class Enabledconverters : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
return true;
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}