我正在使用一个利用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; } }
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] 举报,一经查实,本站将立刻删除。