我正在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>
我的意思是仅在HorizontalAlignment = Left
的左边距等于0时设置textblock
。但是在触发条件下,我不允许使用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>
答案 0 :(得分:2)
您可以在样式中使用DataTrigger。默认的HorizontalAlignment也必须由样式设置,而不是直接在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>