Click here to Skip to main content
11,715,043 members (61,022 online)
Rate this: bad
good
Please Sign up or sign in to vote.
See more: WPF C#4.0 MVVM view
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
#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
#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
<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 27-Feb-13 10:54am
Comments
Lance Contreras at 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

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

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[^]
  Permalink  

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

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 520
1 Richard MacCutchan 275
2 Maciej Los 259
3 ManasKumarM 155
4 Frankie-C 125
0 Sergey Alexandrovich Kryukov 775
1 CHill60 415
2 Richard MacCutchan 405
3 Maciej Los 389
4 OriginalGriff 320


Advertise | Privacy | Mobile
Web02 | 2.8.150901.1 | Last Updated 1 Apr 2013
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100