2016-08-24 2 views
0

Je crée une application UWP à l'aide du modèle 10. J'ai créé un contrôle utilisateur comme celui-ci.Conserver l'état du contrôle utilisateur dans l'application UWP à l'aide du modèle 10

enter image description here

<my:DeviceInfoUserControl OnEndpointTypeChange="{Binding OnEndpointTypeChangeCommand}" Component="{Binding DeviceManagementViewModel,Mode=TwoWay}"></my:DeviceInfoUserControl> 

J'ai Boutons radio sur le contrôle de l'utilisateur. J'ai ajouté le contrôle utilisateur sur plusieurs écrans.

Ce contrôle utilisateur a son propre ViewModel ainsi que certaines propriétés de dépendance comme suit:

public class DeviceManagementViewModel : ViewModelBase 
{ 

} 
public sealed partial class DeviceInfoUserControl : UserControl 
{ 
    public bool IsToggled = true; 
    public DeviceInfoUserControl() 
    { 
     this.InitializeComponent(); 
    } 

    public static readonly DependencyProperty OnEndpointTypeChangeProperty = 
     DependencyProperty.Register(
      "OnEndpointTypeChange", 
      typeof(ICommand), 
      typeof(DeviceInfoUserControl), new PropertyMetadata(null)); 

    public ICommand OnEndpointTypeChange 
    { 
     get { return (ICommand)GetValue(OnEndpointTypeChangeProperty); } 
     set { SetValue(OnEndpointTypeChangeProperty, value); } 
    } 

    public static readonly DependencyProperty ComponentProperty = DependencyProperty.Register("Component", typeof(DeviceManagementViewModel), typeof(DeviceInfoUserControl), new PropertyMetadata(null)); 

    public DeviceManagementViewModel Component 
    { 
     get { return (DeviceManagementViewModel)GetValue(ComponentProperty); } 
     set { SetValue(ComponentProperty, value); } 
    } 
} 

Je veux conserver Sélection des boutons radio sur tous les écrans. Comment devrais-je y parvenir?

+0

donc faire vous voulez sélectionner un radiobutton sur tous les co ntrol en un seul clic? –

+0

Oui ... Quelque chose comme le modèle de vue qui peut être accessible globalement ... Alors que si j'ai vérifié le bouton radio sa sélection sera reflétée partout –

+0

SessionState est intégré dans la ViewModelBase – mvermef

Répondre

0

Don Je ne connais pas son meilleur chemin mais je l'ai fait en créant Singletone Viewmodel.

public class DeviceManagementViewModel : ViewModelBase 
{ 
    public static readonly DeviceManagementViewModel _instance = new DeviceManagementViewModel(); 
    private DeviceManagementViewModel() 
    { 

    } 
/*Properties and Methods */ 

} 

Dans Parent Écran ViewModel J'ai créé suivant la propriété

private DeviceManagementViewModel _deviceManagementViewModel; 
     public DeviceManagementViewModel DeviceManagementViewModel1 
     { 
        get { return _deviceManagementViewModel; } 
        set { Set(ref _deviceManagementViewModel, value); } 
     } 

J'instancié propriété Constructor:

public ConfigurationViewModel() 
    { 
    DeviceManagementViewModel1 = DeviceManagementViewModel._instance; 
    } 

et sur le contrôle de l'utilisateur:

<my:DeviceInfoUserControl OnEndpointTypeChange="{Binding OnEndpointTypeChangeCommand}" Component="{Binding DeviceManagementViewModel1,Mode=TwoWay}"></my:DeviceInfoUserControl> 
0

Vous devez vous assurer que la même instance ViewModel est utilisée pour toutes les instances de contrôle. La façon XAML est de créer toujours nouvelle instance:

<Page.DataContext> 
    <vm:DetailPageViewModel x:Name="ViewModel" /> 
</Page.DataContext> 

Dans la classe de Template10 Bootstrapper avec le remplacement de la méthode ResolveForPage, vous pouvez injecter de ViewModel après la navigation page par une logique personnalisée, ou par injection de dépendance LINK