如何在触发器中使用左边距值?
How to use the left margin value in a trigger?
我正在 xaml
中寻找解决方案。
我想要这样的东西:
<TextBlock HorizontalAlignment="Center">
<TextBlock.Margin>
<MultiBinding
...
</MultiBinding>
</TextBlock.Margin>
<TextBlock.Triggers>
<Trigger Property="Margin.Left" Value="0" >
<Setter Property="HorizontalAlignment" Value="Left" />
</Trigger>
</TextBlock.Triggers>
</TextBlock>
我的意思是只有当textblock
的左边距等于0时才设置HorizontalAlignment = Left
。但是我不允许在触发条件中使用Margin.Left
。
但是我知道我可以使用特定的保证金值,但只能在设置器中使用:
<Grid x:Name="myGrid" Grid.Row="1" Margin="30,0">
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding UI_Preferences.RightPanelPinned}" Value="true" >
<Setter Property="Margin">
<Setter.Value>
<Thickness Left="200"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
您可以在样式中使用 DataTrigger。默认的 HorizontalAlignment 也必须由 Style 设置,而不是直接在 TextBlock 上设置,因为那样会有更高的值优先级。
<TextBlock ...>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center" />
<Style.Triggers>
<DataTrigger Binding="{Binding Margin.Left,
RelativeSource={RelativeSource Self}}"
Value="0">
<Setter Property="HorizontalAlignment" Value="Left" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
我正在 xaml
中寻找解决方案。
我想要这样的东西:
<TextBlock HorizontalAlignment="Center">
<TextBlock.Margin>
<MultiBinding
...
</MultiBinding>
</TextBlock.Margin>
<TextBlock.Triggers>
<Trigger Property="Margin.Left" Value="0" >
<Setter Property="HorizontalAlignment" Value="Left" />
</Trigger>
</TextBlock.Triggers>
</TextBlock>
我的意思是只有当textblock
的左边距等于0时才设置HorizontalAlignment = Left
。但是我不允许在触发条件中使用Margin.Left
。
但是我知道我可以使用特定的保证金值,但只能在设置器中使用:
<Grid x:Name="myGrid" Grid.Row="1" Margin="30,0">
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding UI_Preferences.RightPanelPinned}" Value="true" >
<Setter Property="Margin">
<Setter.Value>
<Thickness Left="200"/>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
您可以在样式中使用 DataTrigger。默认的 HorizontalAlignment 也必须由 Style 设置,而不是直接在 TextBlock 上设置,因为那样会有更高的值优先级。
<TextBlock ...>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center" />
<Style.Triggers>
<DataTrigger Binding="{Binding Margin.Left,
RelativeSource={RelativeSource Self}}"
Value="0">
<Setter Property="HorizontalAlignment" Value="Left" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>