4im*_*ble 9 wpf user-controls custom-controls mouseevent
我想创建一个按钮,其中包含图像和文本块作为内容.所以我去寻找答案,找到了一个帖子(按钮的可重用自定义内容),它告诉我创建一个用户控件.
我这样做了,效果很好.我可以通过依赖属性设置图像源和文本.但是,由于我的控件没有单击事件,因此卡住了.
我做了一点挖掘并得出结论,我可能需要一个派生自Button的CustomControl.它是否正确?或者将点击事件连接到我的UserControl会更好吗?
这是我的UserControl:
<UserControl x:Class="Client.Usercontrols.MyButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" MinHeight="30" MinWidth="40"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Button Width="Auto" HorizontalAlignment="Center">
<Border CornerRadius="5" BorderThickness="1" BorderBrush="Transparent" >
<Grid>
<Image Name="tehImage" Source="{Binding ImageSource}" />
<TextBlock Name="tehText" Text="{Binding Text}"
Style="{DynamicResource ButtonText}" />
</Grid>
</Border>
</Button>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
履行
<my:MyButton ImageSource="../Images/MainSyncButton.png" ImageWidth="141" Text="Synchronise" Click="btnSynchronise_Click" />
Run Code Online (Sandbox Code Playgroud)
Ree*_*sey 28
最简单的选择是让UserControl公开click事件,并通过Button的click事件.
在MyButton的xaml中:
<Button Width="Auto" HorizontalAlignment="Center" Click="onButtonClick">
Run Code Online (Sandbox Code Playgroud)
在MyButton的代码中:
public event RoutedEventHandler Click;
void onButtonClick(object sender, RoutedEventArgs e)
{
if (this.Click != null)
{
this.Click(this, e);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以按原样保留"实施"代码.
| 归档时间: |
|
| 查看次数: |
13427 次 |
| 最近记录: |