.net 使WPF ListBoxItems可选择
我有一个.net 使WPF ListBoxItems可选择,.net,wpf,listbox,selecteditem,listboxitem,.net,Wpf,Listbox,Selecteditem,Listboxitem,我有一个列表框,定义了一个相当简单的项目模板——包含一个文本块和一个按钮。这与预期的一样,但存在一个问题。当我单击ListBoxItem的内容,即文本或按钮时,在列表框中不会选中该行。如果我点击它行的空白部分。我希望在单击行中的任意位置时选择ListBoxItem。实现这一目标需要什么 <ListBox ItemsSource="{Binding SomeElements}"> <ListBox.ItemTemplate> <DataTemp
列表框
,定义了一个相当简单的项目模板
——包含一个文本块
和一个按钮
。这与预期的一样,但存在一个问题。当我单击ListBoxItem
的内容,即文本或按钮时,在列表框中不会选中该行。如果我点击它行的空白部分。我希望在单击行中的任意位置时选择ListBoxItem
。实现这一目标需要什么
<ListBox ItemsSource="{Binding SomeElements}">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem Selected="ListBoxItem_Selected">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Title}"></TextBlock>
<Button>Click</Button>
</StackPanel>
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
点击
@Natrium不,这里的问题不同
您需要删除DataTemplate中的ListBoxItem。DataTemplate不能具有item ListBoxItem,它将无法正常工作。无论您在DataTemplate中定义什么,都会在运行时自动放在ListBoxItem中,所以在您的情况下,这就是它所创建的内容
如果要跟踪选择事件,则应仅捕获ListBox.SelectionChange事件,无需跟踪ListBoxItem_Selected
把你的代码改成这个
<ListBox ItemsSource="{Binding SomeElements}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Title}"></TextBlock>
<Button>Click</Button>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
点击
Perfect。。!感谢您澄清这一点:-)问题发起者遇到了完全相同的问题。
<ListBox ItemsSource="{Binding SomeElements}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Title}"></TextBlock>
<Button>Click</Button>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>