Click here to Skip to main content
16,013,747 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
Hi guys I have a wpf application that is using the mvvm pattern, in my application I have two view model, One controls my main window and the other control my page. I want to be able to bind my login page UI element to my LoginViewModel? Any idea on what to do thanks below is my code for my two view model

Main Window view model
C#
#region Displayed page
       private Uri displayedPage;

       public Uri DisplayedPage
       {
           get
           {
               return this.displayedPage;
           }
           set
           {
               this.displayedPage = value;
               base.OnPropertyChanged("DisplayedPage");
           }
       }

       #endregion
       #endregion

       #region Constructor
       public MainWindowViewModel()
       {
           LoginViewModel _login = new LoginViewModel(this);
       }
       #endregion


while the view model for my page
C#
#region Constructor
        public LoginViewModel(MainWindowViewModel _mainwin)
        {
            _mainViewModel = _mainwin;
            _mainViewModel.DisplayedPage = new Uri("/View/AuthenticationView/LoginPage.xaml", UriKind.RelativeOrAbsolute);
        }
        #endregion


and this is the code for my page
HTML
<TextBlock Grid.Row="2" HorizontalAlignment="Left" Name="UsrNmTxtBlk" Text="Username :" VerticalAlignment="Top" Padding="3" Margin="3,0,0,0" Grid.ColumnSpan="2" />
        <TextBox Grid.Row="3" Height="40" Name="UserNmTxtBx" Margin="3" Grid.ColumnSpan="2" VerticalContentAlignment="Center" Text="{Binding Path=OperatorUserID}"/>
        <TextBlock Grid.Row="4" HorizontalAlignment="Left" Name="UsrPassBlk" Text="Password :" VerticalAlignment="Top" Padding="3" Grid.ColumnSpan="2" />
        <PasswordBox Grid.Row="5" Height="40" HorizontalAlignment="Stretch" Name="UserPassTxtbx" Margin="3" Grid.ColumnSpan="2" VerticalContentAlignment="Center" 
                     passhelper:PasswordBxHelper.BindPassword="True"
                     passhelper:PasswordBxHelper.BoundPassword="{Binding Path=OperatorPassword}"/>
        <Button Content="Login" Grid.Column="1" Grid.Row="6" Height="40" 
                HorizontalAlignment="Right" Margin="3" Name="LogInBtn" 
                Width="78" Grid.ColumnSpan="2" />
Posted
Comments
Lance Contreras 26-Mar-13 11:14am    
I don't get it, what's the structure of your UI? How are you going to launch the login page from the main page? You can try binding it explicitly by setting the control's DataContext to a specific viewmodel object (i.e. MainPage.DataContext = new MainPageViewModel() or LoginPage.DataContext = new LoginViewModel()). It really depend's on the structure of your code.

1 solution

By no means is this a short solution, but I guarantee if you go through these two tutorials you will have your answer:

http://www.youtube.com/watch?v=EpGvqVtSYjs[^]


http://www.youtube.com/watch?v=Dzv8CtUCchY&list=PLjQ72_Gz8xurTQjNh8miqnTFzHlhmhSDw[^]
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900