为了完成您想要的工作,您首先需要一个“数据模型”,也就是说,在您的情况下,该模型必须包含两个“属性”,并且该模型实现了“INotifyPropertyChanged”接口,以通知“UI”属性值已更改。以下是适合您示例的“模型”,我称之为“我的模型”:
public class MyModel: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private object _id;
public object ID
{
get { return _id; }
set
{
_id = value;
this.OnPropertyChanged(new PropertyChangedEventArgs("ID"));
}
}
private object _selectedItem;
public object SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
this.OnPropertyChanged(new PropertyChangedEventArgs("SelectedItem"));
}
}
public virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, e);
}
}
注意:您必须根据需要更改属性和属性类型。
您的DataGrid
应该像下面展示的XAML
一样(填充DataGrid
和ComboBox
的属性
在window
的.cs文件
中):
<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False"
ItemsSource="{Binding MyDataGridItems,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}">
<DataGrid.Columns >
<DataGridTextColumn Header=" ID"
Binding="{Binding ID}"
Width="0.5*" />
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="Threshold"
SelectedItem="{Binding SelectedItem, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding MaxThreshold,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
在
Window
.cs 文件 中,我们有以下代码片段:
public List<MyModel> MyDataGridItems { get; set; }
public List<object> MaxThreshold { get; set; }
在Window的
构造函数
中,您可以初始化列表:
myDataGridItems = new List<MyModel>()
{
new MyModel(){ID=1},
new MyModel(){ID=2},
new MyModel(){ID=3},
new MyModel(){ID=4},
new MyModel(){ID=5},
};
MaxThreshold = new List<object>()
{
"Item 1",
"Item 2",
"Item 3",
"Item 4",
"Item 5"
};
要在DataGrid的特定行中选择combobox的选定项,您可以遍历DataGrid的项目或直接访问所需的行,例如:
var selectedValue = datagrid.getItemAt(rowIndex).combobox.selectedItem;
foreach(MyModel model in myDataGrid.Items)
{
var selecteditem = model.SelectedItem;
}
var model = myDataGrid.Items[0] as MyModel;
if(model!=null)
var selecteditem = model.SelectedItem;