0

次のような DataGrid があります。

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

そして、次のようなタブ コントロール:

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

データグリッドで単一の項目が選択されている場合にのみ、TabControl を有効にしたいと考えています。選択した項目が null の場合、または複数の項目が選択されている場合、タブ コントロールを無効にする必要があります。

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 に答える