Wpf TemplatedParent未设置为UserControl的子级
在我的项目中,我有一个Usercontrol,它包含两个子控件,比如一个textbox和一个button。在App.xaml中为Textbox编写了一个通用样式。因此,当我试图获取TemplatedParent时,这个样式将应用于usercontrol的Textbox和in-tat Textbox,它是null。如何从文本框中获取Usercontrol,以便以文本框样式获取Usercontrol中的属性。Wpf TemplatedParent未设置为UserControl的子级,wpf,xaml,data-binding,binding,user-controls,Wpf,Xaml,Data Binding,Binding,User Controls,在我的项目中,我有一个Usercontrol,它包含两个子控件,比如一个textbox和一个button。在App.xaml中为Textbox编写了一个通用样式。因此,当我试图获取TemplatedParent时,这个样式将应用于usercontrol的Textbox和in-tat Textbox,它是null。如何从文本框中获取Usercontrol,以便以文本框样式获取Usercontrol中的属性。TemplatedParent可在ControlTemplate中使用 对于样式,您需要使用
TemplatedParent
可在ControlTemplate
中使用
对于样式,您需要使用RelativeSource
,模式设置为FindAncestor
,AncestorType
设置为UserControl
假设您想从文本框样式
将文本
设置为用户控件的名称
,您可以这样做:
<Style TargetType="TextBox">
<Setter Property="Text"
Value="{Binding Path=Name,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=UserControl}}"/>
</Style>
对于默认用户控件的属性,您的代码可以正常工作,但对于我的自定义用户控件,它不起作用<代码>不,这也适用。张贴相关代码。如果UserControl
位于TextBox的父可视化树中,它将工作。根据可视化树,它将工作,但不工作。。这就是问题所在。理想情况下应该如此。如果不是,我怀疑你的代码有问题。请把它贴在这里。没有更多的代码可以贴在这里。。我有一个名为UserControl1的Usercontrol
,而MyProperty
是一个dependencProperty,它位于Usercontrol
类型的字符串中。要在上述发布的绑定中访问此属性。