我正在创建一个用于联系人管理的简单WPF应用程序,其中我使用了一个偶然碰到问题的自定义按钮(请参见下面的代码)填充的ItemsControl。
<ItemsControl ItemsSource="{Binding ContactPreviewsCollection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="0,5" CornerRadius="5" Background="{Binding IsSelected, Converter={StaticResource BooleanToBackgroundColorConverter}}">
<Button Height="40" Cursor="Hand" Command="{Binding DataContext.ContactClickedCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding}">
<Button.Template>
<ControlTemplate>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<StackPanel.Resources>
<Style TargetType="TextBlock">
<Setter Property="TextTrimming" Value="CharacterEllipsis"/>
<Setter Property="Margin" Value="5,0"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="FontWeight" Value="Light"/>
<Setter Property="Background" Value="LightSalmon"/>
<Setter Property="Foreground" Value="{Binding IsSelected, Converter={StaticResource BooleanToForegroundColorConverter}}"/>
</Style>
</StackPanel.Resources>
<TextBlock Width="200" Text="{Binding Name}"/>
<TextBlock Width="350" Text="{Binding Address}"/>
<TextBlock Width="100" Text="{Binding DateOfBirth}" TextAlignment="Right"/>
</StackPanel>
</ControlTemplate>
</Button.Template>
</Button>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这段代码创建了一个联系人列表,整个按钮区域应该可以单击(灰色)。问题在于,唯一可单击的区域是按钮内包含的TextBlock(LightSalmon颜色)。屏幕截图: https://i.imgur.com/H9cSLLL.png
所以我的问题来了:是否可以使ControlTemplate内部的StackPanel整体可单击?我尝试将其包装在“边界控制”中,但是没有运气。我也尝试在此处搜索类似问题,但未发现任何问题。
PS:不用担心可怕的颜色-出于这个问题的目的,我将它们更改为更明显的颜色:)