我有一个带有两个MultiBindings的TextBlock。我想让用户控制一下,因为我需要几个实例。实例之间的唯一区别是Name,这只需要作为MultiBinding的一种参数。
<TextBlock x:Name="That"><
TextBlock.Foreground>
<MultiBinding Converter="{StaticResource multiValueFgColorConverter}">
<Binding ElementName="That" Path="Name" />
<Binding Path="TimerState" Mode="TwoWay" />
<Binding Path="Which" Mode="TwoWay" />
</MultiBinding>
</TextBlock.Foreground><TextBlock.Opacity>
<MultiBinding Converter="{StaticResource multiValueOpacityConverter}">
<Binding ElementName="That" Path="Name" />
<Binding Path="TimerState" Mode="TwoWay" />
<Binding Path="Which" Mode="TwoWay" />
</MultiBinding>
</TextBlock.Opacity><Bold><Run Text="That"/></Bold>
- 有没有办法将Name注入用户控件的实例?
- 或者,可能将此用户控件包装在另一个使用它的控件中,并让UC继承父级的名称?
<grid x:Name="That">
<my:UC/> <!-- 'Inherits' "That"? -->
</grid>
- 或者,有没有办法将字符串作为参数传递给MultiBinding?据我所知,MultiBinding并没有采用ConverterParameters,所以它必须通过Binding进行捏造(尽管我可能没有意识到更好的方法......)
感谢您的任何见解 -
答案 0 :(得分:0)
在UserControl中公开依赖属性,并在MultiBinding中绑定它。然后,UserControl的每个实例都可以将绑定分配给特定属性,从而更新multiBinding。
就继承而言,只要允许这样做,就可以继承属性的价值。 x:名称无法继承。
答案 1 :(得分:0)
自从我接触WPF以来已经有一段时间了,您不能使用相对来源吗? 见下文。 How do I use WPF bindings with RelativeSource?