2016-04-01 10 views

Antwort

3

Sie können XAML direkt in Windows 10. So geben Sie eine gridInstruction mit Ihrem Design und setzen Sie seine Sichtbarkeit als collapsed. Verwenden Sie nun adaptive Trigger basierend auf der Bildschirmbreite, um die Sichtbarkeit sichtbar oder minimiert anzuzeigen.

<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

danke Jerin für Ihre Antwort: D – Jina

2

Sie eine benutzerdefinierte StateTrigger für diese erstellen:

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; 
     } 
    } 
} 

Sie können diesen Zustand Trigger verwenden visuelle Zustände einzustellen.

XAML Nutzung:

<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}"> 

Im 'zu klein' visuellen Zustand, verstecken, was Sie verstecken wollen und zeigen Sie Ihre Nachricht

+0

danke Glen Thomas für Ihre Antwort: D – Jina

Verwandte Themen