0

Office2013にタッチモードと呼ばれる新機能が含まれていることに気付いた方もいらっしゃるかもしれません。

Touch&Mouse Office 2013

そして、これはそれがどのように見えるかです ここに画像の説明を入力してください

WPFで同じことを達成できるかどうか疑問に思いました。何か案は?

4

1 に答える 1

0

このようなもの(以下のコード)をメイングリッドに追加する必要がありました。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>

質問:このコードは少し醜いように見えますが、複数のターゲットタイプに同じスニペットを定義する方法はありますか?例えば

于 2013-03-07T15:17:21.823 に答える