WPF在用户控件中注入或继承名称
本文关键字:继承 注入 用户 控件 WPF | 更新日期: 2023-09-27 18:28:34
我有一个带有两个MultiBinding的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进行伪造(尽管我可能不知道更好的方法…)
感谢您的任何见解——
在UserControl中公开依赖属性,并在MultiBinding中绑定到它。然后,UserControl的每个实例都可以将绑定分配给特定的属性,从而更新MultiBinding
就继承而言,只要允许,您就可以继承property的值。x:Name不能被继承。
我接触WPF已经有一段时间了,你不能使用相对源吗?请参见下文。如何将WPF绑定与RelativeSource一起使用?