:) DataGridは1つあります。 Column2には "ComboBox1"があり、Column3には "ComboBox2"があります。 "ComboBox1"にSelectedIndex = 0が指定されている限り、 "ComboBox2"でIsEnabledをfalseに設定したいと思います。各行ごとに別々にWPF:DataGridTemplateColumnの要素を別のDataGridTemplateColumnの要素にバインドする
これは2つのコンボボックス(StyleとDataTriggerの助けを借りて)でDatagridの外で完全に動作します。しかし、Datagridの中で、Column3では "ComboBox1"( "バインディングのソースを見つけることができません...")が表示されません。
これは基本的に名前スコープの問題です。しかし、名前でDataGrid内のComboboxを参照することは、最初は間違っているようです。だから:どのようにこれを達成するためのアイデア?
ありがとうございます!
<Window.Resources>
<CollectionViewSource x:Key="Source1" Source="{Binding List1}" />
<CollectionViewSource x:Key="Source2" Source="{Binding List2}" />
</Window.Resources>
<DataGrid x:Name="ModelControl" AutoGenerateColumns="False" ItemsSource="{Binding List3}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding MyName}" Header="Modellname" />
<DataGridTemplateColumn Header="Header 1">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="ComboBox1" DisplayMemberPath="MyName" SelectedIndex="0">
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={StaticResource Source2}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Header 2">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="ComboBox2" DisplayMemberPath="MyName">
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedIndex,ElementName=ComboBox1}" Value="0">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={StaticResource Source1}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
CompositeCollectionを気にしないでください。
ありがとう!モデルクラスは、両方のComboBoxが共通しているのは完璧です!私はDependencyProperty(INotifyPropertyChangedの代わりに)を介してそれをやろうとしました。何らかの理由で、DependencyPropertyモデルを設定するComboBoxのDropDownClosedプロパティを使用してイベントを追加発生させるまで、何らかの理由で動作しませんでした。 今すぐ完璧に動作します! :-) – Grent