我有一个将对象绑定到的Silverlight页面。
首次加载页面时,所有组合框都会填充,并显示正确的选定项目。 刷新页面时,组合框仍然包含其项目,但所选值不会绑定。
使用
绑定SelectedValue="{Binding WriterID,Mode=TwoWay}"
Article.DataContext = ActiveArticle
更新: 当我更改控件的datacontext时,它似乎丢失了数据绑定 有什么想法吗?
答案 0 :(得分:3)
正如我在评论中所说,这是一个已知问题。我找不到我想要的参考文献,但我找到了bug report on Microsoft Connect
解决方案是在选择更改时重置绑定表达式。报告中的代码在子类ComboBox
中执行此操作,但如果您无法覆盖应用程序中的ComboBox
,则可以在视图类中执行此操作。
public class XComboBox : ComboBox
{
private BindingExpression bE;
public XComboBox()
{
this.SelectionChanged += new SelectionChangedEventHandler(XComboBox_SelectionChanged);
}
void XComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (bE==null)
{
bE = this.GetBindingExpression(ComboBox.SelectedValueProperty);
}
else
{
if (this.GetBindingExpression(ComboBox.SelectedValueProperty) == null)
{
this.SetBinding(ComboBox.SelectedValueProperty, bE.ParentBinding);
}
}
}
}