我的目标是在右键单击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
答案 0 :(得分:0)
您正在绑定到SelectedItemViewModel.Name
,但是我在视图模型中看不到此属性...