我想制作一个中心化的TextBlock,我的第一步是尝试用Canvas.Left创建一个触发器绑定ActualWidth来查看它是否有效,但不幸的是它不起作用,它在此之后不起作用:< / p>
LTest.HorizontalAlignement = Center;
我也尝试了xmal的c#代码版本,它既不能正常工作。
有人帮帮我吗?有一天,我一直为此感到困扰。
它在画布中
<TextBlock Canvas.Left="200" TextWrapping="Wrap" Text="Test222" Canvas.Top="200" FontSize="48" x:Name="LTest">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<Trigger Property="HorizontalAlignment" Value="Center">
<Setter Property="Canvas.Left" Value="{Binding RelativeSource={RelativeSource Self}
, Path=ActualWidth}"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
EDIT1:
它似乎不适用于
Canvas.Left
我已经测试了
UIElement.Visibility
没关系
有人可以帮助我让它与Canvas.Left一起使用吗?
答案 0 :(得分:1)
你应该在你的风格中设置Canvas.Left,所以触发器操作这个属性不会被忽略,因为你在控件声明上设置它
<TextBlock TextWrapping="Wrap" Text="Test222" Canvas.Top="200" FontSize="48" x:Name="LTest">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Canvas.Left" Value="200"/>
<Style.Triggers>
<Trigger Property="HorizontalAlignment" Value="Center">
<Setter Property="Canvas.Left" Value="{Binding RelativeSource={RelativeSource Self},Path=ActualWidth}"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>