我的数据网格列模板中有组合框,如下所示。
<my:DataGridTemplateColumn x:Name="dgColReferece" Header="References" >
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="cmbReferece_SRV" Loaded="cmbReferece_SRV_Loaded" Width="160" SelectionChanged="cmbReferece_SRV_SelectionChanged"
IsTextSearchEnabled="True" SelectedValue="{Binding Reference, Mode=TwoWay}" >
</ComboBox>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
所有组合框都添加了new作为其中一个值为-2的项目。当用户点击添加新项目添加到数据库时,应该反弹到网格中的所有组合框。
以下是SelectionChanged
private void cmbReferece_SRV_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ ComboBox objComboBox = (ComboBox)sender;
if (objComboBox.SelectedValue.ToString() == "<-- Add New -->")
{
//code for saving new item entered by user to database
if (IsSaved)
{
DataSet dsReference = (DataSet)GetFStdReference();
CommonCalls.BindDropDownList(cmbReferece_SRV, dsReference.Tables[0], "Reference", "Reference");
}
objComboBox.SelectedValue = -1;
}
}
这会将新项目仅绑定到所选行中的组合框。但我需要它绑定到所有组合框?我怎样才能做到这一点。我是wpf和绑定东西的新手&gt;我该如何继续?
答案 0 :(得分:0)
上面的代码有点令人困惑。你能解释一下你想做什么吗?我可以看到与正确的WPF编程实践的几个偏差。关于在datagrid中使用组合框。
E.g。
cmbReferece_SRV_SelectionChanged
之类的活动,而不是SelectedValue
使用SelectedValuePath
和Converter
?ComboBox.ItemsSource
是什么?数据表?对象列表? ItemsSource
事件中设置ComboBox
的{{1}},这会适得其反。我知道你是WPF的新手,所以如果你向我解释你的问题,我可以建议一些有用的WPF编码来解决你的问题。