2010-04-11 139 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

相关问题