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坑了

  • 相关阅读:
    开学考试学生成绩管理Java
    动手动脑问题1
    数据库的链接错误分析
    ASP.NET自定义错误页面
    php declare
    HTTP运行期与页面执行模型
    分部类(Partial Classes)
    ASP.NET:小编浅谈泛型的使用
    Windows 2003 SP2下安装IIS无法复制文件
    php 的include require 区别
  • 原文地址:https://www.cnblogs.com/HelloMyWorld/p/4092502.html
Copyright © 2011-2022 走看看