2013-03-07 3 views
0

일부 사용자는 Office 2013에 터치 모드라는 새로운 기능이 있음을 눈치 챘을 것입니다.WPF 응용 프로그램의 터치 모드

Touch&Mouse Office 2013

는 그리고 이것은 내가 WPF에서 동일한을 달성 할 수 있는지 궁금 enter image description here

모습입니다. 어떤 아이디어?

+2

아 .. 이제 알겠습니다 ... 그건 단지'ScaleTransform'에서 1.2 정도입니다. –

+0

명령 사이의 공간과 명령 크기가 약간 증가합니다. – Joel

+0

내 편집 된 댓글보기 레이아웃'ScaleTransform'을 적용해야합니다. –

답변

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의 일부임을 분명히 의미합니다.

편집 : 어쩌면 문제는 DataContext를 이미 뷰 모델로 설정되어있는 XAML Codebehind가 (. 예를 들어 MainWindow.xaml.cs를) 내부 공간에 scaleX가 및 scaleY를 결합해야한다.

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 또는 View의 DP (선호하는대로)에서'public bool IsTouchMode'를 생성하고 이에 반응하고'ScaleX'와'ScaleY' 속성을 수정하는'DataTrigger'를 생성 할 수 있습니다 . –

+0

나를 위해 작동하지 않습니다. 나는 Setter로 ScaleX/Y 속성을 수정할 수 없다고 생각합니다. Setters는 요소 (UIElement)에서 작동하지만 ScaleTransform은 UIElement에서 파생되지 않은 Transform에서 파생됩니다. – Joel

+0

또는 valueconverter를 사용하여이 부울 속성에 바인딩 할 수 있습니까? – Nicholas

관련 문제