【发布时间】:2015-04-13 16:05:33
【问题描述】:
我有在 MainWindowViewModel 的构造函数中初始化 PersonsViewModel 的程序。
public MainWindowViewModel()
{
PersonsViewModel viewModel = new PersonsViewModel();
}
在 MainWindow.xaml 中,PersonsViewModel 和 PersonsView 是相连的。
<Window.Resources>
<DataTemplate DataType="{x:Type vm:PersonsViewModel}">
<vw:PersonsView />
</DataTemplate>
</Window.Resources>
我使用 viewModel 作为 ItemsControl ItemsSource。
<ItemsControl ItemsSource="{Binding viewModel}" Margin="4" />
现在我的程序打开了 UserControl,我需要将 PersonsViewModel 的实例设置为 UserControl.DataContext。
<UserControl.DataContext>
<vm:PersonsViewModel />
</UserControl.DataContext>
我是否正在创建 PersonsViewModel 的新实例。如果我这样做,那么我如何将它绑定到 PersonsViewModel 实例?因为我在 UserControl 中有以下代码。我将 PersonsList 绑定到 ItemsSource,我需要将 Command 绑定到 PersonsViewModel 实例。
<ItemsControl ItemsSource="{Binding PersonsList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Width="50" Text="{Binding Name}" />
<Button Content="Ok" Width="20" Margin="3" Command="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}}, Path=DataContext.Command}" CommandParameter="{Binding Name}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
【问题讨论】:
标签: wpf mvvm view binding viewmodel