有些人可能已经注意到 Office 2013 包含一个称为触摸模式的新功能。
这就是它的样子
我想知道我是否可以在 WPF 中实现相同的目标。有任何想法吗?
有些人可能已经注意到 Office 2013 包含一个称为触摸模式的新功能。
这就是它的样子
我想知道我是否可以在 WPF 中实现相同的目标。有任何想法吗?
我只需要在我的主网格中添加类似这样的内容(下面的代码)。感谢 HighCore 为我指明了正确的方向。
<Grid.LayoutTransform>
<ScaleTransform x:Name="ApplicationScaleTransform"
CenterX="0"
CenterY="0"
ScaleX="1.2"
ScaleY="1.2" />
</Grid.LayoutTransform>
但是如何使用 MVVM 模式实现这一点?
当然,我可以简单地创建一个绑定,将 ScaleX 和 ScaleY 绑定到我的 ViewModel 中的一个属性。
但它真的属于 ViewModel 吗?我的意思是这显然是 GUI 的一部分,应该只在视图中。
编辑: 也许我应该将 ScaleX 和 ScaleY 绑定到 XAML 代码隐藏中的属性(例如 MainWindow.xaml.cs) 问题是 DataContext 已经设置为 ViewModel。
EDIT2 我的解决方案
上面的代码片段导致所有元素“增长”。我对这段代码的问题是我的文本框的字体大小也受到了影响。我通过为每个应该缩放的元素定义一个样式来设法处理这种不需要的行为。
<ResourceDictionary>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
<Style TargetType="ScrollBar">
<Setter Property="LayoutTransform" >
<Setter.Value>
<ScaleTransform x:Name="ApplicationScaleTransform"
CenterX="0"
CenterY="0"
ScaleX="{Binding ScaleFactor, UpdateSourceTrigger=PropertyChanged}"
ScaleY="{Binding ScaleFactor, UpdateSourceTrigger=PropertyChanged}"
/>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="TabItem">
<Setter Property="LayoutTransform" >
<Setter.Value>
<ScaleTransform x:Name="ApplicationScaleTransform"
CenterX="0"
CenterY="0"
ScaleX="{Binding ScaleFactor, UpdateSourceTrigger=PropertyChanged}"
ScaleY="{Binding ScaleFactor, UpdateSourceTrigger=PropertyChanged}"
/>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="Button">
<Setter Property="LayoutTransform" >
<Setter.Value>
<ScaleTransform x:Name="ApplicationScaleTransform"
CenterX="0"
CenterY="0"
ScaleX="{Binding ScaleFactor, UpdateSourceTrigger=PropertyChanged}"
ScaleY="{Binding ScaleFactor, UpdateSourceTrigger=PropertyChanged}"
/>
</Setter.Value>
</Setter>
</Style>
<ResourceDictionary.MergedDictionaries></ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
问题:这段代码看起来有点难看有没有办法为多个目标类型定义相同的片段?例如