TextBlock上的WPF触发器不起作用C#

时间:2013-05-22 14:35:11

标签: c# wpf binding triggers textblock

我想制作一个中心化的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一起使用吗?

1 个答案:

答案 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>