我如何将IsEnabled绑定到数据网格是否选择了单个项目
本文关键字:是否 网格 选择 项目 单个 数据网 数据 IsEnabled 绑定 | 更新日期: 2023-09-27 18:19:09
我有一个这样的DataGrid:
<DataGrid ItemsSource="{Binding MySource}" SelectedItem="{Binding SelectedItem}" />
和一个标签控件,像这样:
<TabControl IsEnabled="{Binding ???}" />
我希望TabControl仅在数据网格中选择单个项目时才启用。如果选中的项为空,或者选中了多个项,则应该禁用选项卡控件。
定义一个布尔属性,并将其绑定到TabControl的IsEnabled属性。
在SelectedItem属性的Setter中,根据选项卡控件的IsEnabled绑定属性的条件设置true或false,检查所选项是否为null或项计数是否> 1
Datagrid绑定:
<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;
}
}
我建议您使用转换器,并与元素名称属性绑定,如下所示。'
名称空间 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();
}
}