:)我有一个DataGrid。在Column2中有“ComboBox1”,在Column3中有“ComboBox2”。只要“ComboBox1”的SelectedIndex = 0,我想在“ComboBox2”上将IsEnabled设置为false。分别为每一行。WPF:将DataGridTemplateColumn中的元素绑定到另一个DataGridTemplateColumn中的元素
这可以完美的在Datagrid之外用两个组合框(在Style和DataTrigger的帮助下)。但是,在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)来做到这一点。由于某种原因没有工作,直到我另外通过ComboBox的DropDownClosed属性引发了一个事件,该属性设置了DependencyProperty模型。 现在完美! :-) – Grent