2010-02-23 66 views
0

我想创建一个ListBox项目的文本绑定到其ItemSource中的对象的regionName属性。这应该是显示,但单击绑定创建的文本不会将ListBoxItem的状态更改为“已选中”(尽管在文本选择该项目后单击空格)。当我使用ListBox时,ListBox的行为与预期相同DisplayMemberBinding属性或当我将Content设置为DataTemplate中的随机静态文本时(单击文本选择ListBoxItem)。但是,我想使用转换器来设置单个项目上的文本颜色(不同的项目将是不同的颜色),所以我似乎必须使用DataTemplate,它不能与DisplayMemberBinding属性一起使用。有其他人遇到过这个问题吗?DataTemplated ListBox项目不响应鼠标点击

XAML列表框:

  <ListBox x:Name="x_UpdateAreaListBox" Margin="0,0,0,10" SelectionChanged="x_UpdateAreaListBox_SelectionChanged" > 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <ListBoxItem Content="{Binding Path=regionName}"/> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

回答

2

将Datatemplate内的ListBoxItem替换为TextBlock或ContentControl。 ListBox本身已经生成了ListBox项目,因此您的datatemplate中不必要的ListBoxItem会吃掉鼠标事件,这就是为什么您会看到we behavior行为

+0

非常好,谢谢! – oltman 2010-02-23 17:00:33

2

你要使用标签或TextBlock的,而不是一个ListBoxItem的。 ListBox将自动为您的DataTemplated数据生成容器。

有关项目容器生成的更多信息,请参阅here