绑定到 ControlTemplate onwer 的 属性
Bind to ControlTemplate onwer's property
我有一个 ControlTemplate,我将其用作 Validation.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 的实际宽度,但它无法正常工作。
知道为什么吗?
您可以绑定到 AdornedElementPlaceholder
的 ActualWidth
:
<Grid>
<AdornedElementPlaceholder x:Name="elem"/>
<TextBlock Text="{Binding [0].ErrorContent}" HorizontalAlignment="Right"
Foreground="Red" Width="{Binding Path=ActualWidth, ElementName=elem}" TextWrapping="Wrap"/>
</Grid>
我有一个 ControlTemplate,我将其用作 Validation.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 的实际宽度,但它无法正常工作。
知道为什么吗?
您可以绑定到 AdornedElementPlaceholder
的 ActualWidth
:
<Grid>
<AdornedElementPlaceholder x:Name="elem"/>
<TextBlock Text="{Binding [0].ErrorContent}" HorizontalAlignment="Right"
Foreground="Red" Width="{Binding Path=ActualWidth, ElementName=elem}" TextWrapping="Wrap"/>
</Grid>