2011-06-02 134 views
-1

在Silverlight組合框上,當您打開下拉列表時,SelectionChanged事件不會觸發,然後單擊當前選定的項目。發生這種情況時,觸發事件/方法的最佳方式是什麼? (除了通常會觸發SelectionChanged的任何事情,即他們或者單擊未選定的或選定的項目;但不是當他們剛剛點擊下拉菜單時)
我目前已經爲列表中的項目設置了DataTemplates。我嘗試附加到那些元素的MouseLeftButtonUp事件中,但是項目周圍有空白,所以它不總是註冊一個關閉組合框並單擊項目的點擊。Silverlight組合框選擇已更改或重新選擇事件

回答

1

你有沒有考慮過「DropDownClosed」事件?

+0

是的,我已經考慮過了。問題在於,當您打開下拉菜單並點擊下拉菜單之外時,它也會觸發。下拉菜單關閉,所以當然會觸發,但用戶實際上沒有點擊目前選擇的項目,他們沒有選擇,所以我不想像他們那樣行事。 – 2011-06-02 20:30:42

+0

嗯,它似乎是一個混亂的東西,如果該項目目前選擇然後我wouldnt再次選擇它..所以這正是什麼Id做的。你可以有一個布爾,selection_made = false,打開下拉列表,將其設置爲yes,如果鼠標關閉,如果在dropdownclosed,它已被設置,然後使用當前選擇的項目..但它很凌亂 – BugFinder 2011-06-02 20:37:14

+0

嗯,是的有點凌亂,但我會明天嘗試,如果沒有更好的建議出現。 – 2011-06-02 22:29:34

0

我知道自從上次評論以來已經很長時間了,但是我會發布我的解決方案,以防有人遇到同樣的問題。 只有這樣,我成功地「重新選擇」當前選擇的項目是修改這樣的ComboBoxItemTemplate:

<Style TargetType="ComboBoxItem"> 
    .... 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ComboBoxItem"> 
       <Grid ... MouseLeftButtonDown="Grid_MouseLeftButtonDown"> 
       ... 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

現在,在Grid_MouseLeftButtonDown事件我取消對當前項目;然後像往常一樣處理鼠標點擊,選擇鼠標光標下的元素。