C# WPF在用户控件中插入或继承名称
我有一个带有两个多重绑定的文本块。我想在此基础上创建一个用户控件,因为我需要几个实例。实例之间唯一的区别是名称,而名称只需要作为多重绑定的一种参数C# WPF在用户控件中插入或继承名称,c#,wpf,C#,Wpf,我有一个带有两个多重绑定的文本块。我想在此基础上创建一个用户控件,因为我需要几个实例。实例之间唯一的区别是名称,而名称只需要作为多重绑定的一种参数 <TextBlock x:Name="That">< TextBlock.Foreground> <MultiBinding Converter="{StaticResource multiValueFgColorConverter}"> <Binding ElementName=
<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>
<
TextBlock.Foreground>
--是否有方法将名称注入到用户控件的实例中?--或者,可能将此用户控件包装到使用它的另一个控件中,并让UC继承父控件的名称
<grid x:Name="That">
<my:UC/> <!-- 'Inherits' "That"? -->
</grid>
--或者,是否有方法将字符串作为参数传递给多重绑定?据我所知,多重绑定不接受ConverterParameters,因此必须通过绑定进行伪造(尽管我可能不知道更好的方法…感谢您提供的任何见解--在UserControl中公开依赖项属性并在多重绑定中绑定到它。然后,UserControl的每个实例都可以将绑定分配给特定属性,从而更新多绑定
就继承而言,只要允许,您就可以继承属性的值。x:名称无法继承。我已经有一段时间没有接触WPF了,您不能使用相对源吗? 见下文。
如果我理解正确:将依赖项属性添加到UC,并在多重绑定中绑定到该属性。绑定到控件上的DP的语法是什么?控件的datacontext是一个ViewModel;其他绑定项引用ViewModel类中的属性。感谢您的回复。将ViewModel分配给顶级UI元素的DataContext,而不是UserControl。然后,您可以通过将binding设置为UserControl的RelativeType来引用UserControl的DataContext,或者将x:Name设置为UserControl并使用binding ElementName来引用它。如果不更改ViewModel分配,则DP将绑定到UserControl的ViewModel而不是预期属性所在的外部ViewModel。为了获得更清晰的洞察力,请看一看,谢谢,我终于找到了相对资源。在UC中添加了一个名为ThisName的依赖项属性,并像在多重绑定中那样绑定到它:当我创建UC实例时,我设置了ThisName属性,Bob的叔叔。。。