在wpf中访问数据网格内的组合框属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在wpf中访问数据网格内的组合框属性相关的知识,希望对你有一定的参考价值。
我有一个数据网格,在wpf中有四列组合框。在开始时,启用第一个组合框。在第一个组合框上进行选择后,第二个组合框将启用。我无法访问我的xaml.cs文件中的组合框名称属性,因此我可以在成功选择第一个组合框后启用下一个组合框列。你能建议如何访问我的xaml.cs文件中数据网格内存在的组合框属性吗?
这是我的xaml代码
<DataGridTemplateColumn
Header ="Example 9">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding PartIds, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem ="{Binding PartId,UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
答案
假设DataGrid
中有两列,第一列包含combobox
,其selecteditem
绑定到名为PartId
的属性,第二列包含combobox
,selecteditem
绑定到名为PartId2
的属性,您的模型应该看起来像那:
public class Model
{
public string PartId { get; set; }
public string PartId2 { get; set; }
}
现在,假设你的DataGrid
的itemsource
与一个名为ObservableCollection
的DgCollection
绑定:
private ObservableCollection<Model> _dgCollection;
public ObservableCollection<Model> DgCollection
{
get { return _dgCollection; }
set
{
if (Equals(value, _dgCollection)) return;
_dgCollection = value;
OnPropertyChanged();
}
}
一旦第一列的DataTrigger
被设置,第二列可以使用combobox
激活其selecteditem
,如下所示:
<DataGrid ItemsSource="{Binding DgCollection}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn
Header ="Example 9">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding PartIds, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem ="{Binding PartId,UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn
Header ="Example 10">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="FirstCbx" ItemsSource="{Binding PartIds, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem ="{Binding PartId2,UpdateSourceTrigger=PropertyChanged}" >
<ComboBox.Style>
<Style TargetType="ComboBox">
<Setter Property="IsEnabled" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding PartId}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
您可以轻松地将其概括为四列。
以上是关于在wpf中访问数据网格内的组合框属性的主要内容,如果未能解决你的问题,请参考以下文章
MVVM WPF ComboBox SelectedItem 绑定未在数据网格内激活