MainWindow中要與UserControl自定義的屬性作綁定使用方法和基礎篇內的一樣,
分為使Code綁定或在XAML內綁定。
在UserControl內,需要將內部原件的屬性再與自定義的屬性作綁定。
MainWindow原件屬性<=>自定義屬性<=>UserControl原件屬性
利用上一篇創建的UserControl中,
Label1使用Code作屬性綁定,
Label2使用XAML作屬性綁定。
由於在WPF中的屬性綁定必須是DependencyProperty,
所以必須將自定義屬性LabelValue註冊為DependencyProperty。
註冊方法(命名原則=>屬性+Property):
public object LabelValue { get => GetValue(LabelValueProperty); set => SetValue(LabelValueProperty, value); } public static readonly DependencyProperty LabelValueProperty = DependencyProperty.Register("LabelValue", typeof(object), typeof(UserControl1));
UserControl的Label1使用code綁定自定義屬性LabelValue
public UserControl1() { InitializeComponent(); Label1.SetBinding(ContentProperty, new Binding(nameof(LabelValue)) { Source = this }); //上下為Binding的兩種建構式 //DataContext = this; //Label1.SetBinding(Label.ContentProperty,nameof(LabelValue) ); }
UserControl的Label2在XAML綁定自定義屬性LabelValue
<Label x:Name="Label2"
DataContext="{Binding RelativeSource={RelativeSource AncestorType=local:UserControl1}}"
Content="{Binding LabelValue}"
HorizontalAlignment="Stretch"
Grid.Row="1"
VerticalAlignment="Stretch"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
FontSize="36"
Background="#FF60B646"
Foreground="#FFFBF8F6"/>
執行結果:
沒有留言:
張貼留言