【发布时间】:2014-11-24 16:30:12
【问题描述】:
在一个自定义控件中,我有一个堆栈面板(水平)作为内容,一个文本块和一个按钮。
自定义控件有效,结果是一个矩形,这是我的local:DropDownToggleButton。
这个反应角分为两个子矩形:左边是<TextBlock Text="Test"部分,右边是按钮<Button x:Name="ButtonTest,它被拉伸以填充矩形的高度。
但是,当我单击矩形的右上角时,local:DropDownToggleButton 本身会接收事件,而不是那里也存在的按钮。就好像 Button 只响应按钮内容中 Textblock 接收到的鼠标事件。如何使按钮的整个区域响应鼠标点击?
自定义控件对按钮的Clicked 或PreviewMouseDown 事件作出反应。两个事件都有同样的问题。同时添加Panel.ZIndex="1"也无济于事。
<local:DropDownToggleButton ToolTip="Show" DropDownButton="{Binding ElementName=ButtonTest}"
VerticalAlignment="Stretch" VerticalContentAlignment="Stretch" Padding="0" BorderThickness="0"
Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}">
<local:DropDownToggleButton.DropDownMenu>
<ContextMenu>
<ContextMenu.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Background="WhiteSmoke"></StackPanel>
</ItemsPanelTemplate>
</ContextMenu.ItemsPanel>
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MenuItem}">
<TextBlock Padding="6" Text="{TemplateBinding Header}" Background="{TemplateBinding Background}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Margin" Value="0"/>
<Style.Triggers>
<Trigger Property="TextBlock.IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource mouseover}"/>
</Trigger>
</Style.Triggers>
</Style>
</ContextMenu.ItemContainerStyle>
<MenuItem Header="Test 1" />
<MenuItem Header="Test 2"/>
</ContextMenu>
</local:DropDownToggleButton.DropDownMenu>
<StackPanel Orientation="Horizontal" VerticalAlignment="Stretch">
<TextBlock Text="Test" VerticalAlignment="Center"/>
<Button x:Name="ButtonTest" ToolTip="Other" Padding="0" Margin="0" VerticalContentAlignment="Stretch" VerticalAlignment="Stretch">
<Button.Template>
<ControlTemplate TargetType="Button">
<ContentPresenter/>
</ControlTemplate>
</Button.Template>
<TextBlock FontSize="16" FontFamily="Marlett" Text="6" VerticalAlignment="Center" />
</Button>
</StackPanel>
</local:DropDownToggleButton>
【问题讨论】:
标签: wpf xaml mouseevent