2017-01-24 5 views
0

При написании конкретного XAML-устройства, использующего UWP, мы можем создавать разные виды XAML для каждого семейства устройств. Например, Track.DeviceFamily-Xbox.xaml. На этой странице используется тот же внутренний номер, что и Track.xaml, но будет загружаться при использовании приложения на Xbox.Загрузка пользовательского интерфейса устройства с использованием InitializeComponent()

Мы также можем передать URL-адрес методу InitializeComponent() для загрузки определенной страницы xaml.

Теперь мне интересно, могу ли я объединить эти методы вместе. В этом примере я хотел бы загрузить пользовательский интерфейс Xbox во весь экран. Следующий код будет идеальным способом сделать это, но .. ну я здесь, так что это не работает :)

public Track() 
{ 
     // If the app is full screen, we can use the Xbox UI 
     if (App.IsFullScreen) 
     { 
      InitializeComponent(new Uri("ms-appx:///Views/Track.DeviceFamily-Xbox.xaml", UriKind.Absolute)); 
     } 
     else 
     { 
      InitializeComponent(); 
     } 

     // etc ...  
    } 

Кто-нибудь есть какие-нибудь идеи, с тем, что я могу сделать? Есть ли способ загрузить конкретное представление Xbox или просто создать представление XAML, вызвать его TrackXbox.xaml, а затем обработать загрузку этого представления, когда пользователь будет полноэкранным или работает на Xbox?

ответ

2

Хорошо Так что вы пытаетесь сделать, не может быть возможно, но то, что это способ реализации такого рода функциональности:

  1. Для определенных взглядов устройств, использовать несколько папок семейства устройств и добавить XAML в ней. Компилятор автоматически загружает xaml из папки и codebehind из обычного вида. Дополнительная информация об этом here.

Но то, что вы хотите, чтобы переключаться между несколькими видами на приложение изменять размер, так что вы можете сделать, это использовать VisualStates что-то, как показано ниже:

<VisualStateManager.VisualStateGroups> 
     <VisualStateGroup> 
      <VisualState x:Name="Normal"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="900"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <--For larger screensizes--> 
        <Setter Value="3" Target="MyDummyButton.(Grid.RowSpan)"/> 
       </VisualState.Setters> 

      </VisualState> 
      <VisualState x:Name="Mobile"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="0"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 

        <Setter Value="1" Target="MyDummyButton.(Grid.RowSpan)"/> 
             </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 

и теперь, когда вы хотите, чтобы переключаться между несколькими видами в то же самое семейство устройства, что вы можете сделать это из C# в CodeBehind

VisualStateManager.GoToState(this, "Normal", useTransitions); 
более

информации о переключении визуальных состояний here.

+0

Извините за задержку, были довольно заняты. Я не могу легко применить метод Visual State из-за того, что XAML очень отличается для Xbox и ПК. Но спасибо за помощь! –

Смежные вопросы