在我的WPF XAML表单中,我有很多绑定到我的属性的元素。
对于我正在执行此步骤的每个属性:
<TextBlock Grid.Column="0" Grid.Row="0" Name="TB11" Text="{Binding TBX11}"
VerticalAlignment="Center" HorizontalAlignment="Center"
DataContext="{Binding RelativeSource={RelativeSource Self}}" />
和
#region TBX11
private static void OnXBPropertyChanged(DependencyObject dependencyObject,
DependencyPropertyChangedEventArgs e)
{
table myUserControl = dependencyObject as table;
myUserControl.OnPropertyChanged("XB11");
myUserControl.OnCaptionPropertyChanged(e);
}
private void OnCaptionPropertyChanged(DependencyPropertyChangedEventArgs e) {
TB11.Text = TBX11;
}
public static readonly DependencyProperty TBX11Property =
DependencyProperty.Register("TBX11", typeof(string), typeof(table),
new PropertyMetadata(string.Empty, OnXBPropertyChanged));
public string TBX11 {
get { return GetValue(TBX11Property).ToString(); }
set {
SetValue(TBX11Property, value);
OnPropertyChanged("TBX11");
}
}
#endregion
我现在甚至无法意识到我需要在这里写多少次但是我不知道我是否可以让它变得更容易?因为我需要在这里设置的是WPF块名和绑定名。
答案 0 :(得分:1)
有几种方法可以减少重复:
ItemsControl
的{{1}}可以创建重复的元素。我发现您的代码存在一些问题:
ItemTemplate
的{{1}}方法中,您不应该这样做 - 此绑定会处理更新!OnCaptionPropertyChanged
属性中调用此方法TextBlock.Text
,不应向依赖项属性的getter或setter添加任何逻辑。无法保证会调用这些内容。TBX11
已设置为自身,因此OnPropertyChanged("TBX11")
绑定无效!答案 1 :(得分:0)
我不知道我是否可以让它变得更容易?
您可以使用像Caliburn Micro这样的MVVM框架。
Caliburn将允许您将XAML重写为
<TextBlock Grid.Column="0" Grid.Row="0" Name="TB11"
VerticalAlignment="Center" HorizontalAlignment="Center"/>