WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性
如果你要自定義一個圖片按鈕控件,那么如何在主窗體綁定這個控件上圖片的Source呢?
我向大家介紹一個用 依賴屬性(DependencyProperty) 實現的方法。
關于依賴屬性的介紹,請大家參考:http://msdn.microsoft.com/zh-cn/library/ms752914.aspx
首先我們看用戶控件中如何定義這個依賴屬性:
1.新建一個用戶控件,命名為ImageButton
2.在CS定義如下代碼:
public partial class ImageButton : UserControl
??? {
??????? public ImageSource imgSource
??????? {
??????????? get { return (ImageSource)GetValue(ImageSourceProperty); }
??????????? set { SetValue(ImageSourceProperty, value); }
??????? }
??????? public static readonly DependencyProperty ImageSourceProperty;???????????
??????? public ImageButton()
??????? {
??????????? InitializeComponent();
??????? }
??????? static ImageButton()
??????? {
??????????? var metadata = new FrameworkPropertyMetadata((ImageSource)null);
??????????? ImageSourceProperty = DependencyProperty.RegisterAttached("imgSource", typeof(ImageSource), typeof(ImageButton), metadata);
??????? }
??? }
以上代碼,我們定義了控件中,Image 的Source屬性。
3.在控件的xaml中,添加一個Image控件
完整代碼如下:
<UserControl Name="UC" x:Class="TouchScreen12.Controls.ImageButton"
???????????? 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="167" d:DesignWidth="177">
??? <Grid x:Name="myGrid" Margin="0">
??????? <Image x:Name="myImage" Source="{Binding ElementName=UC, Path=imgSource}" Width="Auto" Height="Auto" Stretch="Fill" Margin="0,0,0,0"/>???
??? </Grid>
</UserControl>
好了,現在這個基礎的圖片按鈕控件就初步完成了。
在工程的主窗體添加這個控件
<imgBut:ImageButton Height="{Binding bHeight}" HorizontalAlignment="Center" x:Name="image1" VerticalAlignment="Center" Width="{Binding bWidth}" Margin="0" imgSource="{Binding Image1Path}"/>
大家可以把圖片的路徑直接綁定給這個控件了!
總結
以上是生活随笔為你收集整理的WPF 使用依赖属性(DependencyProperty) 定义用户控件中的Image Source属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue:触发视图更新的hack
- 下一篇: MySQL- 用Navicat通过隧道连