当前位置:  开发笔记 > 编程语言 > 正文

Combobox无法正确绑定到SelectedItem

如何解决《Combobox无法正确绑定到SelectedItem》经验,为你挑选了0个好方法。

我有两个项目.一个是工作,另一个不是,但他们之间的差异并不是我认为"应该"具有任何重要性.第一个项目是破坏的项目,它是我想要解决的项目.第二个项目是我在第一个项目根本无法工作时创建的一个小样本项目.当然样本效果很好.

这是第一个项目的视图.我删除了一堆"MainWindowTabControlStyle",因为它只是破坏的组合框.我有理由确定问题不在风格中,因为它是来自正在运行的项目的复制和粘贴.

 
 
     
     

 

 

 
     
         
     

以下是设置为MainWindow的DataContext的视图模型.ViewModelBase类与Josh Smith在本月的MSDN文章中写的完全相同.

public sealed class MainWindowViewModel : ViewModelBase 
{ 
    public MainWindowViewModel() 
    { 
    } 

    private ObservableCollection subscriptions; 
    public ObservableCollection Subscriptions 
    { 
        get 
        { 
            if (subscriptions == null) 
            { 
                subscriptions = new ObservableCollection(); 
                subscriptions.Add(new Subscription() { DisplayName = "ABC" }); 
                subscriptions.Add(new Subscription() { DisplayName = "XYZ" }); 
                subscriptions.Add(new Subscription() { DisplayName = "PDQ" }); 
            } 

            return subscriptions; 
        } 
        set { subscriptions = value; } 
    } 

    private Subscription selectedSubscription; 
    public Subscription SelectedSubscription 
    { 
        get { return selectedSubscription; } 
        set { selectedSubscription = value; } 
    } 
} 

当我从调试器运行项目时,首先认为调用的是Subscriptions集合的getter.然后在SelectedSubscription上调用setter(它为null).之后,我可以更改组合框中的选定项目,直到我脸部呈蓝色,并且SelectedSubscription属性的setter不会再次更改.重要的是要注意组合框确实包含正确的值.

在第二个项目中,代码是相同的,但第一个被调用的是SelectedSubscription属性的setter(它为null),然后调用Subscriptions集合的getter,最后第二次调用SelectedSubscription的setter并且它具有与Subscriptions集合中的第一个项匹配的值.

如果你有任何想法,这个小宝石花了我大约5个小时我愿意尝试.

谢谢

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有