加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

xaml – ComboBox SelectedValue不显示

发布时间:2020-12-14 04:34:22 所属栏目:Windows 来源:网络整理
导读:我的WinRT / C#XAML Metro应用程序中有一个奇怪的问题,使用 Windows 8 Release Preview(安装了最新的补丁).我正在使用一个ComboBox,它的值ItemsSource和SelectedValue与ViewModel中的属性绑定: ComboBox SelectedValue="{Binding MySelectedValue,Mode=TwoW
我的WinRT / C#XAML Metro应用程序中有一个奇怪的问题,使用 Windows 8 Release Preview(安装了最新的补丁).我正在使用一个ComboBox,它的值ItemsSource和SelectedValue与ViewModel中的属性绑定:
<ComboBox SelectedValue="{Binding MySelectedValue,Mode=TwoWay}"
          ItemsSource="{Binding MyItemsSource,Mode=OneWay}"
          Width="200" Height="30" />

代码背后:

public MainPage()
{
    this.InitializeComponent();

    DataContext = new TestViewModel();
}

和一个非常简单的定义的TestViewModel,使用字符串:

public class TestViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private IEnumerable<string> _myItemsSource = new List<string>
        {
            "Test Item 1","Test Item 2","Test Item 3"
        };
    public IEnumerable<string> MyItemsSource
    {
        get { return _myItemsSource; }
    }

    private string _mySelectedValue = "Test Item 2";
    public string MySelectedValue
    {
        get { return _mySelectedValue; }
        set
        {
            _mySelectedValue = value;
            if (PropertyChanged != null)
            {
                PropertyChanged(this,new PropertyChangedEventArgs("MySelectedValue"));
            }
        }
    }
}

现在我觉得这个简单的解决方案应该只是工作…但是当我启动应用程序,SelectedValue =“测试项目2”不显示,ComboBox为空.通过设置断点,我注意到,当我设置视图的DataContext时,绑定值MyItemsSource和MySelectedValue是从视图模型中获取的.此操作后,ComboBox.SelectedValue属性实际上设置为“测试项目2”,但它不显示!另外我注意到,当我通过用户操作在UI上更改ComboBox中的选定值时,更改的值显示在ComboBox中,View Model属性将相应更新.所以一切似乎都可以正常工作,除了MySelectedValue View Model属性的初始可视化.我变得真的绝望了…

现在这是最简单的例子,原来我想将整个实体绑定到ComboBox,设置DisplayMemberPath和SelectedValuePath.不幸的是,发生同样的问题.

我在我的例子中发现了这个问题:在XAML标记中,我已经在ItemsSource属性之前定义了SelectedValue属性.如果我以这种方式交换两个定义,它的作用是:
<ComboBox ItemsSource="{Binding MyItemsSource,Mode=OneWay}"
      SelectedValue="{Binding MySelectedValue,Mode=TwoWay}"
      Width="200" Height="30" />

这真是奇怪而烦人.现在我想知道:这是一个bug还是设计?我认为这是一个错误,因为控制应该是工作,而不管XAML中定义的属性的顺序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读