Rac*_*hel 18
最简单的方法是使用DataTriggers
和Converter
测试绑定值是大于还是小于参数.
这将允许您根据绑定值轻松调整样式设置器.例如,你可以使用
<Style x:Key="MyControlStyle">
<!-- Default Values -->
<Setter Property="Grid.Row" Value="0" />
<Setter Property="Grid.Column" Value="0" />
<Style.Triggers>
<DataTrigger Value="True"
Binding="{Binding ActualHeight, ElementName=MyWindow,
Converter={StaticResource IsValueLessThanParameter},
ConverterParameter=400}">
<!-- Values to use when Trigger condition is met -->
<Setter Property="Grid.Row" Value="1" />
<Setter Property="Grid.Column" Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
如果您有一个更复杂的布局,其中许多部分会根据某些触发值进行更改,则可以使用触发器而不是单个属性替换整个模板
<Style x:Key="MyContentControlStyle" TargetType="{x:Type ContentControl}">
<Setter Property="ContentTemplate" Value="{StaticResource BigTemplate}" />
<Style.Triggers>
<DataTrigger Value="True"
Binding="{Binding ActualHeight, ElementName=MyWindow,
Converter={StaticResource IsValueLessThanParameter},
ConverterParameter=400}">
<Setter Property="ContentTemplate" Value="{StaticResource LittleTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
我相信您也可以绑定到SystemParameters
对象以在绑定中使用有关应用程序的其他信息,尽管我现在还记不起它的确切语法.
归档时间: |
|
查看次数: |
6683 次 |
最近记录: |