Wpf 绑定到控制模板onwer';s属性

Wpf 绑定到控制模板onwer';s属性,wpf,binding,relativesource,Wpf,Binding,Relativesource,我有一个ControlTemplate,用作验证。ErrorTemplate: <ControlTemplate x:Key="ErrorTemplate"> <Border BorderBrush="Red" BorderThickness="2"> <Grid>

我有一个ControlTemplate,用作验证。ErrorTemplate:

            <ControlTemplate x:Key="ErrorTemplate">
                <Border BorderBrush="Red" BorderThickness="2">
                    <Grid>
                        <AdornedElementPlaceholder/>
                        <TextBlock Text="{Binding [0].ErrorContent}" HorizontalAlignment="Right" Margin="100 0 5 0" Foreground="Red" Width="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ActualWidth}" TextWrapping="Wrap"/>
                    </Grid>
                </Border>
            </ControlTemplate>

            <Style TargetType="TextBox" BasedOn="{StaticResource DefaultTextBoxStyle}">
                <Setter Property="TextAlignment" Value="Left"/>
                <Setter Property="MinHeight" Value="50"/>
                <Setter Property="Validation.ErrorTemplate" Value="{StaticResource ErrorTemplate}"/>
            </Style>

我试图通过TemplatedParent将ControlsTemplate的TextBlock的宽度绑定到使用它的TextBlock的实际宽度,但它无法正常工作


知道为什么吗?

您可以绑定到
装饰元素占位符的
实际宽度

<Grid>
    <AdornedElementPlaceholder x:Name="elem"/>
    <TextBlock Text="{Binding [0].ErrorContent}" HorizontalAlignment="Right"
               Foreground="Red" Width="{Binding Path=ActualWidth, ElementName=elem}" TextWrapping="Wrap"/>
</Grid>


结果相同。未显示验证消息,它看起来也像fps drop。视图运行不平稳。相同吗?那么你想要/期待什么结果呢?你想实现什么?我希望验证消息与已验证文本框和包装的大小相匹配。你将它放在装饰元素的顶部…我希望它在顶部,但大小相同。不知何故,删除Margin=“100 0 5 0”使其正常工作。谢谢