【问题标题】:Silverlight combobox not rebindingSilverlight 组合框未重新绑定
【发布时间】:2023-03-08 18:30:01
【问题描述】:

我有一个非常简单的表单用于将项目添加到数据网格。这是问题子项,一个组合框,在有人第一次单击按钮添加项目时起作用,但随后的单击不会为所选值返回任何值:

<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");
}

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

【问题讨论】:

    标签: silverlight binding combobox


    【解决方案1】:

    这是 ComboBox 中内置 SL 的一个已知错误,即如果修改了底层 ItemsSource,SelectedValue 绑定将被破坏。 (如果在 SelectedValue 为非 null 值后将其设置为 null,它也会中断)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      相关资源
      最近更新 更多