zoukankan      html  css  js  c++  java
  • 解答WPF中ComboBox SelectedItem Binding不上的Bug

    正在做一个打印机列表,从中选择一个打印机(System.Printing)

    <ComboBox Width="150" 
                          ItemsSource="{Binding PrintQueues}" 
                          SelectedItem="{Binding Model.CurrentPrintQueue}" 
                          DisplayMemberPath="Name">
                </ComboBox>
    var printServer = new LocalPrintServer();
    
                PrintQueues = printServer.GetPrintQueues();
    
                Model.CurrentPrintQueue = printServer.DefaultPrintQueue;

    都觉得这样是没有问题的对不对,可是,实际运行起来 SelectedItem就是绑定不上,找了一大堆网站,都说ComboBox的一个Bug,换SelectedIndex,SelectedValue等方法,我想这不科学,这么优秀的控件,这么简洁的Binding,不可能有Bug的呀。

    解决方法:

    首先想SelectedItem肯定是来自于ItemsSource中的一个引用,并且他们是同一个对象才行。

    但是看代码,我以为printServer.DefaultPrintQueue就是GetPrintQueues()中的一个对象,好嘛,这样写

    Model.CurrentPrintQueue = PrintQueues.FirstOrDefault(x => x.Name == printServer.DefaultPrintQueue.Name);

    居然绑定上了!

    所以以后一定要记住了,SelectedItem必须是ItemsSource中的同一个对象才行,被PrintServer坑了

  • 相关阅读:
    windows修复移动硬盘文件夹打不来的问题
    secureCRT设置
    core dump配置
    ssh免密登陆的问题解决
    crontab的环境变量
    tmux配置
    shell的技巧笔记
    记一次route配置不起作用的问题解决过程
    crontab笔记
    Python中的一个诡异编码问题的追踪
  • 原文地址:https://www.cnblogs.com/HelloMyWorld/p/4092502.html
Copyright © 2011-2022 走看看