Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF在用户控件中插入或继承名称_C#_Wpf - Fatal编程技术网

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的叔叔。。。