我有这个小UserControl,它只是一个按钮。我想用它来做一些很酷的事情,比如捕捉一个手势和其他人想要的自定义控件。
我的问题是我无法为MouseEnter编写事件句柄,因为我无法像常规UserControl那样处理ContentTemplate的成员。
通常我:
<Grid>
<Label Name="hover" Content="hover me"/>
</Grid>
我可以在C#中解决
this.hover.MouseEnter += handler;
我的目标是使用ContentTempalte
将该用例应用于其他UserControl<UserControl x:Class="project.my_button" <!-- omitted for brevity --> >
<UserControl.ContentTemplate>
<DataTemplate>
<Border BorderBrush="#FFFFFFFF" BorderThickness="1" >
<Grid Name="hover">
<ContentPresenter Content="{TemplateBinding Content}"/>
</Grid>
</Border>
</DataTemplate>
</UserControl.ContentTemplate>
答案 0 :(得分:0)
试试这个
<UserControl x:Class="Stackoverflow.ButtonUC"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Button>
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Grid Height="100" Width="200" Background="Red" MouseEnter="Grid_MouseEnter_1" Margin="20">
<ContentPresenter Content="{TemplateBinding Property=Content}"/>
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>
的.cs
public partial class ButtonUC : UserControl
{
public ButtonUC()
{
InitializeComponent();
}
private void Grid_MouseEnter_1(object sender, MouseEventArgs e)
{
}
}
如果您想在Window中订阅此事件,您将在该窗口中应用此控件,那么您可以在此用户控件中创建一个事件,并在Window类中订阅它并从上面的处理程序中触发该事件。