Silverlight组合框不重新绑定

时间:2011-03-04 19:50:49

标签: silverlight binding combobox

我有一个非常简单的表单,用于向datagrid添加项目。这是问题子,一个组合框,第一次有人点击按钮添加项目时工作,但后续点击不会返回所选值的任何值:

<ComboBox SelectedValuePath="Content" SelectedValue="{Binding Mode=TwoWay, NotifyOnValidationError=True, Path=NewResource.ResourceType, ValidatesOnExceptions=True}" Grid.Row="2" Grid.Column="1" Margin="0,10,0,0">
    <ComboBoxItem Content="AV"  />
    <ComboBoxItem Content="Room Setup" /></ComboBox>

以下是视图模型中添加资源的代码:

if (NewResource.Name != string.Empty)
{
    ProposalResource _pr = new ProposalResource()
    {
        CreatedBy = App.UserID,
        CreatedOn = DateTime.Now,
        ModifiedBy = App.UserID,
        ModifiedOn = DateTime.Now,
        Name = NewResource.Name,
        ProposalID = CurrentProposal.ProposalID,
        Quantity = NewResource.Quantity,
        ResourceType = NewResource.ResourceType
    };

    CurrentProposal.ProposalResources.Add(_pr);
    ctx.SubmitChanges();

    NewResource.Name = "";
    NewResource.Quantity = null;
    NewResource.ResourceType = null;
    RaisePropertyChange("NewResource");
}

我的问题是这适用于第一次插入。资源类型从组合框中获取,一切都很好。但后续单击不会返回任何选定的值。后续请求是否有理由不接受双向绑定?

1 个答案:

答案 0 :(得分:1)

这是使用ComboBox内置的SL的已知错误,如果修改了基础ItemsSource,则SelectedValue绑定会被破坏。 (如果在非null值之后将SelectedValue设置为null,它也会中断。)

为此需要手工制作的解决方法,我首选的方法是使用ItemsSource和SelectedValue属性编写交互行为(请参阅例如here如何编写自己的),我绑定(或修改) )这些属性,我修改ComboBox的Items和SelectedItem属性代码,并在ComboBox的SelectionChanged事件上更改行为的选定值,而不是绑定它。