微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – Silverlight Combobox失去了视觉值,但在隐藏和重新显示它所在的页面时保持选定的值

我正在使用一个利用MVVM的Silverlight 4.0项目,我们有一个驻留在视图上的组合框,其值和选定值分别绑定到可观察的Organizations集合和SelectedOrganization(视图模型上都存在这两个值).通过我们的项目,可以隐藏或显示此控件所在的页面.第一次加载一切看起来都很棒但是当你转到另一个控件(用控件隐藏选项卡然后再回到它)时,组合框中当前选中的值看起来像是空白,但是当我调试时,选中价值仍然存在.

可视化树正在重新创建,但我不知道为什么当隐藏父页面然后重新显示时,组合框丢失应该在框中的文本.页面上的所有其他控件都表现正常(autocompletetextBox,textblocks,textBoxes,所有这些控件都以相同的方式绑定到viewmodel).

这是组合框的声明方式:

<ComboBox 
    SelectedItem="{Binding SelectedOrganization,Mode=TwoWay}"
    ItemsSource="{Binding Organizations}"
    displayMemberPath="Name"
    Margin="5,0" 
    MinWidth="100" />

该组织的班级在这里

[DataContract]
public class Organization
{
    [DataMember]
    public Guid OrganizationID { get; set; }

    [DataMember]
    public string Name { get; set; }
}

并且viewmodel具有以下代码用于绑定:

public Organization SelectedOrganization
{
    get { return (Organization)GetValue("SelectedOrganization"); }
    set 
    { 
        SetValue("SelectedOrganization",value); 
    }
}

public ObservableCollection<Organization> Organizations
{
    get { return (ObservableCollection<Organization>)GetValue("Organizations"); }
    set { SetValue("Organizations",value); }
}

切换父页时,如何保持所选值,我需要做什么?

解决方法

问题是我在SelectedItem之后声明了ItemsSource.显然这是Silverlight 3和4中的一个错误.答案在这里讨论了 Silverlight Combobox and SelectedItem.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐