0

我有一个这样的 DataGrid:

<DataGrid ItemsSource="{Binding MySource}" SelectedItem="{Binding SelectedItem}" />

和这样的选项卡控件:

<TabControl IsEnabled="{Binding ???}" />

我希望仅在数据网格中选择单个项目时启用 TabControl。如果所选项目为空,或者如果选择了多个项目,则应禁用选项卡控件。

4

2 回答 2

2

定义一个布尔属性并将其绑定到 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;
}
}
于 2013-06-20T15:03:19.127 回答
0

我建议您使用转换器并与元素名称 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();
        }
    }
于 2013-06-20T15:11:54.593 回答