2014-09-28 30 views
0

因此,WinRT中XAML組合框的一個特定行爲使我非常頭疼,因爲我的客戶將其視爲缺陷,而不在乎它是否是控件的行爲,他希望它改變。但是,我找不到任何說明如何更改的東西。我所說的行爲是,當沒有選擇任何東西時,ComboBox彈出窗口打開,在列表中間顯示ItemsSource。我有一個排序的國家名單,除了美國,英國和加拿大排在前列。這3個項目是最常選擇的項目,客戶希望它們位於頂部,而不必滾動列表以找到它們。這很簡單,但是因爲列表在中間打開,所以您仍然需要滾動很多才能找到它們。是否有一些財產我錯過了這種行爲關閉?我終於能夠說服他們,CarouselPanel不是缺陷,但是這個不會飛。WinRT XAML ComboBox在列表中間打開

在此先感謝!

when no selection has been made list is opened in the middle

UPDATE: 所以這個組合框通過數據綁定視圖模型。在這種情況下,ViewModel對該特定屬性沒有值(它是一個空字符串),所以Combobox顯示爲空,這是很好的和合意的。當你點擊Combobox選擇一個值時,它會在可用值的中間顯示該列表。這是不可取的行爲。它應該顯示頂部列表中的第一個值!

回答

0

那麼,人們會認爲開箱即用的Combobox(沒有其他內置的下拉控件)能夠像任何其他MS技術中的任何其他組合框控件一樣工作,當然這是MS ,爲什麼事情要一致。無論如何,如果VM中的值爲空,我最終不得不創建一個「空白」條目並預先選擇該項目,然後在該屬性的設置器中編寫代碼以忽略如果「空白」項目是否選擇。這是kludgy和代碼味道的怪異,但它的作品

0

當您將SelectedItem屬性設置爲對象時,ComboBox會嘗試使該對象成爲列表中當前選定的對象。如果在列表中找到該對象,它將顯示在ComboBox的編輯部分中,並且SelectedIndex屬性將設置爲相應的索引。如果對象不在列表中,則SelectedIndex屬性保留其當前值。

+0

所以這個組合框是通過ViewModel的數據綁定。在這種情況下,ViewModel對該特定屬性沒有值(它是一個空字符串),所以Combobox顯示爲空,這是很好的和合意的。當你點擊Combobox選擇一個值時,它會在可用值的中間顯示該列表。這是不可取的行爲。它應該顯示頂部列表中的第一個值! – Shaggy13spe 2014-09-30 19:56:05

+0

您可以在Combobox的單擊事件中應用SelectedItem屬性嗎? – Lyle 2014-09-30 20:13:29

+0

選擇什麼?如果還沒有選擇,我不想預先選擇一個選項,因爲這會改變數據。 – Shaggy13spe 2014-10-01 21:59:23