我有一个列表框,它绑定到一个自定义类型的可观察集合,该集合通过我的数据模板显示每个项目:
<ListBox x:Name="ListBox" Style="{StaticResource CustomListBox}" ItemsSource="{Binding HandStats}" Height="410" Width="150" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding HoleCards[0].CardParts.Value}" Margin="2"/>
<Image Source="{Binding HoleCards[0].SuitImagePath}" Width="10" Height="10" Margin="2"/>
<TextBlock Text="{Binding HoleCards[1].CardParts.Value}" Margin="2"/>
<Image Source="{Binding HoleCards[1].SuitImagePath}" Width="10" Height="10" Margin="2"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Runs:" Margin="2"/>
<TextBlock Text="{Binding NumberOfRuns}" Margin="2"/>
<TextBlock Text="Players:" Margin="2"/>
<TextBlock Text="{Binding NumberOfPlayers}" Margin="2"/>
</StackPanel>
<StackPanel.InputBindings>
<MouseBinding Gesture="LeftClick" Command="{Binding Path=DataContext.PopulateReport, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
CommandParameter="{Binding ElementName=ListBox, Path=SelectedItem}"/>
</StackPanel.InputBindings>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我的列表框图片: http://imgur.com/a/QGz8z
现在理想情况下,当我单击堆栈面板中每个项目的任意位置时,将选择该项目并触发命令。但我的问题是项目选择和命令触发不能正常工作。
只有在文本块之间或文本块右侧的空白区域中单击时,才会选择该项目,但不会触发该命令。该命令仅在我首次选择该项目时触发,然后再次单击其中一个文本块或其中一个图像。
我还是WPF的新手,所以如果我没有多大意义,请提前告知我,谢谢:)
答案 0 :(得分:1)
因此,我决定使用不同的方法而不是使用输入绑定。我在我的虚拟机中创建了一个属性,并将其绑定到列表中的选定项目。所以现在每次我选择一个新项目(现在都能很好地工作)时,属性会在我的虚拟机中更新。简单!
答案 1 :(得分:0)
尝试将Background
的{{1}}属性设置为StackPanel
:
Transparent
如果没有<StackPanel Orientation="Vertical" Background="Transparent">
...
,则不会按预期引发点击事件。