我需要一些關於我的第一個MVVM WPF應用程序的幫助。我想在我的主窗口上鍊接兩個視圖。這裏的情況:WPF MVVM鏈接視圖
我有,例如這兩個的ViewModels:
- PersonDetailViewModel
- PersonListViewModel
PersonListViewModel包含:
- 一個PersonDetailViewMode
L的作爲通過名爲"SelectedPerson"
公共屬性進行訪問 - 的PersonDetailViewModels
叫人
的ObservableCollection
我也創建了兩個視圖:
PersonListView
,它列出了數據網格中的所有人員。
PersonDetailView
,這只是一堆綁定到viewmodel
PersonDetailViewModel
的標籤和文本框。
我想在我的MainWindow上一起使用這兩個。但我不知道如何使這項工作! 這是我到目前爲止有:
PersonListView.xaml
<UserControl x:Class="DSS.View.PersonListView"
...
xmlns:myViewModels="clr-namespace:DSS.ViewModel">
<UserControl.DataContext>
<myViewModels:PersonListViewModel/>
</UserControl.DataContext>
<Grid>
<DataGrid x:Name="dgPeople" ItemsSource="{Binding People}" AutoGenerateColumns="False" IsReadOnly="True" ColumnWidth="*"
SelectedItem="{Binding SelectedPerson}">
<DataGrid.Columns>
<DataGridTextColumn Header="PersonId" Binding="{Binding PersonId}" Visibility="Hidden"/>
<DataGridTextColumn Header="Firstname" Binding="{Binding Firstname}"/>
<DataGridTextColumn Header="Lastname" Binding="{Binding Lastname}"/>
...
</DataGrid.Columns>
</DataGrid>
</Grid>
PersonDetailView.xaml:
<UserControl x:Class="DSS_CV.View.PersonDetailView"
...
xmlns:myViewModels="clr-namespace:DSS.ViewModel">
<UserControl.DataContext>
<myViewModels:PersonDetailViewModel/>
</UserControl.DataContext>
<Grid>
<Grid.ColumnDefinitions>... </Grid.ColumnDefinitions>
<Grid.RowDefinitions>...</Grid.RowDefinitions>
<Label Grid.Row="0" Grid.Column="0">Firstname:</Label>
<TextBox Grid.Row="0" Grid.Column="1" x:Name="txtFirstName" Text="{Binding Path=Firstname}"></TextBox>
<Label Grid.Row="1" Grid.Column="0">Lastname:</Label>
<TextBox Grid.Row="1" Grid.Column="1" x:Name="txtLastName" Text="{Binding Path=Lastname}"></TextBox>
<Label Grid.Row="2" Grid.Column="0">Birthdate:</Label>
<TextBox Grid.Row="2" Grid.Column="1" x:Name="txtBirtDate" Text="{Binding Path=DateOfBirth}"></TextBox>
...
<WrapPanel Grid.Row="7" Grid.ColumnSpan="5">
<Button>Update</Button>
<Button>Insert As New</Button>
</WrapPanel>
</Grid>
現在,我想結合/鏈接這些用戶控制在一個窗口中,因此它們以一種方式一起工作從datagrid中獲取一行允許編輯其他用戶控件中的詳細信息。
MainWindow.xaml:
<Window x:Class="DSS_CV.MainWindow"
...
xmlns:myViews="clr-namespace:DSS_CV.View">
<Grid>
<myViews:PersonListView x:Name="dgPersons" Grid.Row="0" Grid.Column="0"/>
<myViews:PersonDetailView Grid.Row="1" Grid.Column="0" DataContext="{Binding dgPersons.SelectedPerson, Mode=TwoWay}"/>
</Grid>
</Window>
INotifyPropertyChanged
到處實現在我的課和選擇不同的行PersonListView
正確地更新其財產SelectedPerson
。現在我看不到如何將PersonDetailView
的datacontext綁定到SelectedPerson
。如果有人能幫助我。
感謝您的幫助!它現在有效! – user2135342
沒問題!如果它解決了你的問題,你可以將其標記爲已解決。 –