c# - 如何在触发器中使用左边距值?
问题描述
我正在寻找解决方案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
只有当左边距textblock
等于0时才设置。但我不允许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>
推荐阅读
- javascript - 使用计算字段表单插件
- c# - 根据 ajax 调用的检查显示部分视图或点击控制器操作
- java - UsernamePasswordAuthenticationFilter 需要 loginProcessingUrl = "/login"?
- firebase - Firestore 中具有 Id / 参考的子集合或集合
- es6-promise - Storage.get AWS => 如何在反应组件中返回 url?
- python - 多边形与直线的交点呈匀称
- sql - 循环遍历 CTE 结果并为每个结果运行查询
- javascript - Javascript 绑定错综复杂
- emacs - 自动完成安装emacs
- angular - RxJS 和 Angular 6 - 可观察对象、主题和基本的获取和添加数组操作