0
在自定義控件中,我有作爲內容的stackpanel(水平)en,Textblock和Button。如何將自定義控件中的按鈕帶到「前面」?
自定義控件的工作原理和結果是一個矩形,它是我的local:DropDownToggleButton
。
此矩形分爲兩個子矩形:左邊的是<TextBlock Text="Test"
部分,右邊是按鈕<Button x:Name="ButtonTest
,它被拉伸以填充矩形的高度。
但是,當我點擊矩形的右上部分時,本地:DropDownToggleButton本身接收事件,而不是在那裏也出現的按鈕。就好像按鈕只響應在按鈕內容中由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>
明天我會試試。那麼,在這種情況下,我不必使用類似Border_Click的東西? – Gerard 2014-11-24 17:26:18
沒有邊框只是給按鈕一個元素來捕捉點擊,它會傳播到按鈕點擊處理程序 – ndonohoe 2014-11-24 17:32:05
它的工作原理就像我想象的那樣。是否也可以強制ContentPresenter(無論如何)以與邊框相同的方式伸展自己? – Gerard 2014-11-25 08:29:55