响应式布局在各种现代的 UI 框架中不是什么新鲜的概念,基本都是内置支持。然而在古老的 WPF 框架中却并没有原生支持,后来虽然通过 Blend 自带的 Interactions 库实现了响应式布局,但生成的代码量太大了,而且需要引入额外的库。
如果只是希望临时局部地方使用响应式布局,那么其实可以直接使用 WPF 内置的绑定机制来完成响应式布局。本文介绍如何使用。
思路是在控件尺寸发生变更的时候更新控件的样式。而能容易实现这个的只有 Trigger
和 Setter
那一套。直接在控件上使用的 Trigger
只能使用 EventTrigger
,因此我们需要编写能写更多种类 Trigger
的 Style
。
<Style x:Key="Style.Foo.WalterlvDemo">
<Setter Property="Grid.Row" Value="0" />
<Setter Property="Grid.Column" Value="0" />
<Style.Triggers>
<DataTrigger Value="True"
Binding="{Binding ActualHeight, ElementName=DemoWindow,
Converter={StaticResource GreaterOrEqualsConverter},
ConverterParameter=640}">
<Setter Property="Grid.Row" Value="1" />
<Setter Property="Grid.Column" Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
定义了一个样式,默认情况下ÿ