2016-04-01 4 views
2

にサイズ変更されたときに、私はC#のユニバーサルアプリの世界では新しいですメッセージは、私は私のインターフェースが応答するために、画面が600未満である場合に、このメッセージを取得するために試してみました: enter image description here表示アプリケーションが

がそれですトリガーでそれを行うことは可能ですか?あなたはこのためにカスタムStateTriggerを作成することができ、ヘルプ

答えて

3

あなたは直接だけgridInstructionを指定するウィンドウ10にXAMLを使用することができますあなたのデザインで、可視性をcollapsedに設定します。画面の幅に基づいて適応型トリガを使用して、可視性を表示または縮小するように設定します。

<VisualStateManager.VisualStateGroups> 
      <VisualStateGroup x:Name="WindowStates"> 
       <VisualState x:Name="WideState"> 
        <VisualState.StateTriggers> 
         <AdaptiveTrigger MinWindowWidth="600" /> 
        </VisualState.StateTriggers> 
        <VisualState.Setters> 
         <Setter Target="gridInstruction.Visibility" Value="Collapsed" />       
        </VisualState.Setters> 
       </VisualState> 
       <VisualState x:Name="NarrowState"> 
        <VisualState.StateTriggers> 
         <AdaptiveTrigger MinWindowWidth="0" /> 
        </VisualState.StateTriggers> 
        <VisualState.Setters> 
         <Setter Target="gridInstruction.Visibility" Value="Visible" />       
        </VisualState.Setters> 
       </VisualState> 
      </VisualStateGroup> 
     </VisualStateManager.VisualStateGroups> 
+0

返信いただきありがとうございます:D – Jina

2

ため 感謝:

public enum LayoutStateType 
{ 
    TooSmall, BigEnough 
} 

public class LayoutTrigger : StateTriggerBase 
{ 
    public static readonly DependencyProperty MinimalStateWidthProperty = DependencyProperty.Register("MinimalStateWidth", typeof(double), typeof(LayoutTrigger), new PropertyMetadata(600.0, OnTriggerPropertyChanged)); 

    public static readonly DependencyProperty LayoutStateProperty = DependencyProperty.Register("LayoutState", typeof(LayoutStateType), typeof(LayoutTrigger), new PropertyMetadata(LayoutStateType.Landscape, OnTriggerPropertyChanged)); 

    public LayoutTrigger() 
    { 
     Window.Current.SizeChanged += Window_SizeChanged; 
     UpdateTrigger(); 
    } 

    public double MinimalStateWidth 
    { 
     get 
     { 
      return (double)GetValue(MinimalStateWidthProperty); 
     } 

     set 
     { 
      SetValue(MinimalStateWidthProperty, value); 
     } 
    } 

    public LayoutStateType LayoutState 
    { 
     get 
     { 
      return (LayoutStateType)GetValue(LayoutStateProperty); 
     } 

     set 
     { 
      SetValue(LayoutStateProperty, value); 
     } 
    } 

    private static void OnTriggerPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     var trigger = d as LayoutTrigger; 
     trigger.UpdateTrigger(); 
    } 

    private void Window_SizeChanged(object sender, WindowSizeChangedEventArgs e) 
    { 
     UpdateTrigger(); 
    } 

    private void UpdateTrigger() 
    { 
     switch (LayoutState) 
     { 
      case LayoutStateType.TooSmall: 
       if (Window.Current.Bounds.Width <= MinimalStateWidth) 
       { 
        SetActive(true); 
       } 
       else 
       { 
        SetActive(false); 
       } 

       break; 
      case LayoutStateType.BigEnough: 
      default: 
       if (Window.Current.Bounds.Width > MinimalStateWidth) 
       { 
        SetActive(false); 
       } 
       else 
       { 
        SetActive(true); 
       } 

       break; 
     } 
    } 
} 

あなたは視覚的な状態を設定するには、この状態のトリガーを使用することができます。

XAMLの使用法:「小さすぎる」のビジュアル状態で

<Grid> 
    <VisualStateManager.VisualStateGroups> 
     <!-- Visual states reflect the application's view state --> 
     <VisualStateGroup x:Name="ApplicationViewStates"> 
      <VisualState x:Name="DefaultLayout"> 
       <VisualState.StateTriggers> 
        <triggers:LayoutTrigger LayoutState="TooSmall" /> 
       </VisualState.StateTriggers> 
      </VisualState> 
      <VisualState x:Name="PortraitLayout"> 
       <VisualState.StateTriggers> 
        <triggers:LayoutTrigger LayoutState="BigEnough" /> 
       </VisualState.StateTriggers> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 
</Grid Style="{StaticResource LayoutRootStyle}"> 

、あなたがあなたのメッセージを隠し、表示したいものは何でも隠す

+0

あなたの返信にはグレントーマス氏に感謝します:D – Jina

関連する問題