WPF控件之ImageButton
2011-05-06 09:44
369 查看
使用wpf进行开发的时候,发现wpf居然没有提供ImageButton这样的控件,不过wpf提供了诸多实现途径,而且网上也有现成的控件可以利用。下面是一些链接
http://stackoverflow.com/questions/2491941/wpf-tristate-image-button/3676177#3676177
http://imagebuttonwpf.codeplex.com/
http://blogs.msdn.com/b/knom/archive/2007/10/31/wpf-control-development-3-ways-to-build-an-imagebutton.aspx
由于本人创建ImageButton的目的是满足需求、解决问题,而不是更好、更强,那么最简单的方法就是上述第三个链接中的第三个方法。这要感谢wpf提供了组合现有控件形成新控件的强大扩展能力了。关于这种实现方法的讲解可以参考链接中的文章。
我要补充的是,不知道是作者疏忽,还是本人没有正确使用。ImageButton居然没有Click的事件,那还是Button吗?(诸位也可以试试MouseLeftButton事件,看看是不是能够替代Click,本人比较懒:) )。那具体怎么做呢?那就要找路由事件帮忙了(路由事件,侬帮帮忙好伐?)。基于已有代码大概步骤如下:
注册并发布自定义控件的Click路由事件
public static readonly RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent("Click",RoutingStrategy.Bubble,typeof(RoutedEventHandler),typeof(ImageButton));
public event RoutedEventHandler Click
{
add { AddHandler(ClickEvent, value); }
remove { RemoveHandler(ClickEvent, value); }
}
接收自定义控件中组合的控件(即Image、TextBlock、StackPanel)的Click路由事件
<Button Click="Button_Click">
<StackPanel Orientation="Horizontal" Margin="10">
<Image Source="{Binding ElementName=UC,
Path=Image}"
Width="{Binding ElementName=UC,
Path=ImageWidth}"
Height="{Binding ElementName=UC,
Path=ImageHeight}"/>
<TextBlock Text="{Binding
ElementName=UC, Path=Text}"
Margin="10,0,0,0"/>
</StackPanel>
</Button>
激发自定义控件的Click事件
private void Button_Click(object sender, RoutedEventArgs e)
{
RaiseEvent(new RoutedEventArgs(ClickEvent));
}
http://stackoverflow.com/questions/2491941/wpf-tristate-image-button/3676177#3676177
http://imagebuttonwpf.codeplex.com/
http://blogs.msdn.com/b/knom/archive/2007/10/31/wpf-control-development-3-ways-to-build-an-imagebutton.aspx
由于本人创建ImageButton的目的是满足需求、解决问题,而不是更好、更强,那么最简单的方法就是上述第三个链接中的第三个方法。这要感谢wpf提供了组合现有控件形成新控件的强大扩展能力了。关于这种实现方法的讲解可以参考链接中的文章。
我要补充的是,不知道是作者疏忽,还是本人没有正确使用。ImageButton居然没有Click的事件,那还是Button吗?(诸位也可以试试MouseLeftButton事件,看看是不是能够替代Click,本人比较懒:) )。那具体怎么做呢?那就要找路由事件帮忙了(路由事件,侬帮帮忙好伐?)。基于已有代码大概步骤如下:
注册并发布自定义控件的Click路由事件
public static readonly RoutedEvent ClickEvent = EventManager.RegisterRoutedEvent("Click",RoutingStrategy.Bubble,typeof(RoutedEventHandler),typeof(ImageButton));
public event RoutedEventHandler Click
{
add { AddHandler(ClickEvent, value); }
remove { RemoveHandler(ClickEvent, value); }
}
接收自定义控件中组合的控件(即Image、TextBlock、StackPanel)的Click路由事件
<Button Click="Button_Click">
<StackPanel Orientation="Horizontal" Margin="10">
<Image Source="{Binding ElementName=UC,
Path=Image}"
Width="{Binding ElementName=UC,
Path=ImageWidth}"
Height="{Binding ElementName=UC,
Path=ImageHeight}"/>
<TextBlock Text="{Binding
ElementName=UC, Path=Text}"
Margin="10,0,0,0"/>
</StackPanel>
</Button>
激发自定义控件的Click事件
private void Button_Click(object sender, RoutedEventArgs e)
{
RaiseEvent(new RoutedEventArgs(ClickEvent));
}
相关文章推荐
- WPF控件之DataGrid, DatePicker, Grid, GridSplitter, HyperlinkButton, Image
- 系出名门Android(5) - 控件(View)之TextView, Button, ImageButton, ImageView, CheckBox, Ra
- Android控件(View)之TextView, Button, ImageButton, ImageView, CheckBox 简单介绍
- WPF:自定义控件之Button-自定义样式,共用样式
- 系出名门Android(5) - 控件(View)之TextView, Button, ImageButton, ImageView, CheckBox, RadioButton, AnalogClock, DigitalClock
- 常用控件的使用的方法(TextView、Button、EditText、ImageView、ProrgressBar)
- android UI - 简单控件textView Button ImageView ImageButton
- 控件之DataGrid, DatePicker, Grid, GridSplitter, HyperlinkButton, Image
- 一起Talk Android吧(第五十八回:Android中UI控件之ImageButton)
- Android控件——TextView、EditText、ImageView、Button、ImageButton
- 潜移默化学会WPF(绚丽篇)--热烈欢迎RadioButton,改造成功,改造成ImageButton,新版导航
- asp.net ImageButton 控件
- ASP.NET中ImageButton图片按钮控件的使用
- 图像处理控件ImageGear for .NET教程:C# WPF应用程序创建示例(3)
- 控件之DataGrid, DatePicker, Grid, GridSplitter, HyperlinkButton, Image
- 【WPF/C#】拖拽Image图片控件
- Xcode控件使用笔记一:label、Button、slider 、switch、imageView、toolBar、TextField
- 控件中ImageButton的ImageUrl相对路径问题
- 控件之DataGrid, DatePicker, Grid, GridSplitter, HyperlinkButton, Image
- UI中常用的控件ImageView\Button