如何提示一个新窗口显示所选项目的模型数据?

时间:2019-01-25 19:00:16

标签: c# .net wpf mvvm data-binding

我的目标是在右键单击ItemsControl中的项目并在Edit中选择ContextMenu时显示一个新窗口

这是我到目前为止所拥有的。 我有MainWindow.xaml,它是应用程序的MainView 在该视图上,我有一个ItemsControl,其中DataTemplate的{​​{1}}是自定义UserCard

在我的ViewModel中,UserControl的{​​{1}}设置为我的ItemsControl

我像这样在后台代码中设置DataContext。

ItemSource

这是XAML

ObservableCollection

现在它确实显示了两个public MainWindow() { InitializeComponent(); this.DataContext = new BaseViewModel(); } 控件,因为在ViewModel中,我向<StackPanel> <Grid> <ItemsControl ItemsSource="{Binding CardViewModel.Users}" dd:DragDrop.IsDragSource="True" dd:DragDrop.IsDropTarget="True" dd:DragDrop.UseDefaultEffectDataTemplate="True"> <ItemsControl.ItemTemplate> <DataTemplate> <controls:UserCard> <controls:UserCard.ContextMenu> <!-- Bind the DataContext of the CM to the DataContext that's bound to the RootObject--> <ContextMenu DataContext="{Binding DataContext, Source={local:RootObject}}"> <MenuItem Header="Edit" Command="{Binding CardViewModel.EditUser}" CommandParameter="{Binding PlacementTarget.Tag, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/> </ContextMenu> </controls:UserCard.ContextMenu> </controls:UserCard> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </Grid> </StackPanel> 派生了两个对象。

但是,当我单击UserCard中的ItemSource时,我想打开一个显示MenuItem控件的新窗口,并且这些控件应绑定到与我的模型不同的属性。

我不知道如何将该模型传递给新窗口

这是UserControl

ContextMenu

那里的绑定工作正常!我可以在ItemsControl TextBlock中看到名称和所有内容,但是当我右键单击 <TextBlock Text="{Binding Description}" TextWrapping="Wrap" Width="180" VerticalAlignment="Top" Margin="10" FontFamily="Consolas"/> <TextBlock Width="100" Height="20" VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="5" Text="{Binding Name}" FontFamily="Consolas" /> <TextBlock Width="100" Height="20" VerticalAlignment="Bottom" HorizontalAlignment="Left" Text="{Binding Id}" FontFamily="Consolas"/> </Grid> 并显示新窗口时,我不知道如何传递它。

NewWindow.xaml

MainWindow

ViewModel

UserControl

1 个答案:

答案 0 :(得分:0)

您正在绑定到SelectedItemViewModel.Name,但是我在视图模型中看不到此属性...