2010-04-11 138 views
8

我正在嘗試爲列表框設置一個樣式,當項目上有鼠標時,將選中的項目設置爲一個項目。WPF listbox在鼠標上選擇項目

任何提示?

+0

好問題。如果使用模板而不使用代碼隱藏,可以發現這種事件重定向是否可行。 – Russell 2010-04-11 09:27:12

回答

13

您可使用列表框本身的風格,影響其所有項目做到這一點:

<ListBox.Resources> 
    <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding IsMouseOver,RelativeSource={RelativeSource Self}}" 
         Value="True"> 
       <Setter Property="IsSelected" Value="True" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</ListBox.Resources> 

這會當IsMouseOver屬性爲true的項目IsSelected屬性設置爲true。如果你的列表框不是多選的,它就像你期望的那樣工作。

+0

效果很好。奇怪的是,當我的數據綁定到SelectedItem和它綁定到的項目之前有一個值它的鼠標將不會選擇該項目(如果你離開並回來)。有任何想法嗎? – 2010-04-11 09:58:04

+0

這很奇怪。出於興趣,嘗試添加一個setter以將樣式中的IsSelected設置爲false(觸發器外部)。 – 2010-04-11 10:29:54

+0

不,不解決它。我可以解決它(由於沒有在啓動時選擇),但這是我不介意弄清楚的。 – 2010-04-11 11:00:53

相關問題