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

打賞

免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號  © 2018-2021 CODEPRJ.COM