【发布时间】:2014-08-11 16:23:43
【问题描述】:
我一直在自学 WPF,并且仍在学习基本概念和术语。因此,如果此问题的标题措辞不正确,请原谅我。
我有以下 XAML,它是绑定到 ViewModelBase 类型对象的 HierarchicalDataTemplate 的一部分:
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding PrefixStyle.Text}"
FontWeight="{Binding PrefixStyle.Weight}"
Foreground ="{Binding PrefixStyle.Foreground}"
Margin="0,0,3,0"/>
<TextBlock Text="{Binding ValueStyle.Text}"
FontWeight="{Binding ValueStyle.Weight}"
Foreground ="{Binding ValueStyle.Foreground}"
Margin="0,0,3,0"/>
<TextBlock Text="{Binding SuffixStyle.Text}"
FontWeight="{Binding SuffixStyle.Weight}"
Foreground ="{Binding SuffixStyle.Foreground}"
Margin="0,0,3,0"/>
...
</StackPanel>
ViewModelBase 具有在 XAML 中引用的相应属性:
public TextBlockStyle PrefixStyle...
public TextBlockStyle ValueStyle...
public TextBlockStyle SuffixStyle...
public class TextBlockStyle : INotifyPropertyChanged
{
public string Text...
public FontWieght Weight...
public Brush Foreground
}
我怎样才能在 XAML 中只定义一次 TextBlock 到 TextBlockStyle 的绑定,而不必像上面那样显式绑定每个 TextBlock 属性?所以我可以为每个TextBlock 写一行:
<StackPanel Orientation="Horizontal">
<TextBlock Source="{Binding PrefixStyle}" />
<TextBlock Source="{Binding ValueStyle}" />
<TextBlock Source="{Binding SuffixStyle}" />
...
</StackPanel>
我只是不知道从哪里开始。我需要继承 TextBlock 吗?使用绑定组?
这一定是程序员遇到的常见问题 - 如果之前有人问过这个问题,我深表歉意。我试过搜索,但我对 WPF 太陌生了,不知道如何正确表达我的问题。
【问题讨论】:
-
请注意,如果您尝试使用的代码不起作用,您可能会在某一时刻拼写错误
Prefix,然后写成Pefix。 -
@AlastairCampbell 谢谢。我会编辑帖子。这不是我真正的代码。只是用它来澄清我的问题。