WPF:带有自定义模板的按钮无法整体点击

时间:2018-07-22 19:29:38

标签: c# wpf button itemscontrol

我正在创建一个用于联系人管理的简单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:不用担心可怕的颜色-出于这个问题的目的,我将它们更改为更明显的颜色:)

0 个答案:

没有答案