2013-03-07 37 views
0

您可能會注意到Office 2013包含一項名爲觸摸模式的新功能。WPF應用程序中的觸摸模式

Touch&Mouse Office 2013

,這是它的外觀 enter image description here

我在想,如果我能實現在WPF相同。有任何想法嗎?

+2

啊..現在我明白了......這只是一個'ScaleTransform'到1.2或其他東西。 – 2013-03-07 14:58:24

+0

命令之間的空間和命令的大小增加了一點。 – Joel 2013-03-07 15:02:01

+0

看到我編輯的評論。您需要應用佈局'ScaleTransform'。 – 2013-03-07 15:04:24

回答

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的已被設置爲視圖模型。

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> 

問:此代碼看起來有點醜,有沒有辦法來定義多重目標類型相同的片段?例如

+0

你也可以在ViewModel中創建一個'public bool IsTouchMode',或者在View中創建一個DP(如你喜歡的),並創建一個'DataTrigger'對其作出反應並修改'ScaleX'和'ScaleY'屬性。 – 2013-03-07 15:28:10

+0

不適合我。我想我不能用Setter修改ScaleX/Y屬性。由於Setters在元素(UIElement)上工作,但ScaleTransform是從不是從UIElement派生的Transform派生的。 – Joel 2013-03-08 09:55:42

+0

或者您可以嘗試使用valueconverter綁定到此布爾值屬性? – Nicholas 2013-03-08 10:43:37

相關問題