我有一个包含多个视图的WPF应用程序.我想从视图1到视图2的toswitch,从那里我可以切换到多个视图.所以我想在视图1上有一个按钮,它在同一窗口中加载view2.
我试过这些东西,但不能让它发挥作用.
从第一个链接问题是我不理解viewmodellocator代码.他们调用CreateMain(); 函数但是这个定义在哪里,以及如何从视图内部切换到另一个视图.
我知道这个问题已经被多次询问了,我已经阅读了很多关于它的答案.然而,它们都没有满足我的要求,因此我需要一些建议.
我目前正在开发的应用程序如下所示:http: //screenshooter.net/100101493/smrkpog
它是基于MVVM Light Toolkit的WPF MVVM应用程序.带网格的区域是ListBox+ Canvas.这些项目(让我们称之为"Neumes")再次由ListBox+ Canvas每个组成,并由用户动态创建.每个Neume都由'Elements'组成,它们呈现为红色形状.
当用户双击Neume时,将打开一个新窗口.它应该能够编辑(翻译,调整大小,旋转)所选Neume所构成的元素.我想要做的是将存储在MainViewModel中的SelectedNeume(带有一个Elements列表)传递给我新创建的窗口的ViewModel.我对如何实现这个有一些想法:
DataContext新窗口的,我正在寻找既简单又整洁的解决方案.我很乐意使用选项3.但就WPF而言,我是一个相对新手,并且不知道如何真正开始.此外,我担心当主ListBox上的双击事件被触发时,新窗口打开的事实可能会出现问题,因为我找不到将命令绑定到ListBoxItem的方法.它的Style还是DataTemplate(事件触发器/ EventToCommand解决方案对我不起作用).
这是事件:
private void ListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var item = ((FrameworkElement)e.OriginalSource).DataContext as Neume;
if (item != null)
{
var view2 = new EditWindow();
view2.Owner = this;
view2.SetDataContext();
view2.ShowDialog();
}
}
Run Code Online (Sandbox Code Playgroud)
该SetDataContext()方法当前负责根据1.选项绑定DataContext:
public void SetDataContext()
{
if(this.Owner != null)
DataContext = this.Owner.DataContext;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:你会推荐哪种方案?1.或2.是否有任何问题?可能的内存泄漏?
我的 Windows 通用页面上有一个 ListView。我使用 UserControl 来定义我的 ItemTemplate,以便我可以使用relativepanel 和 VisualStateManager 来控制我的项目根据屏幕尺寸的显示方式...
<ListView ItemsSource="{Binding Path=AllThings}"
ItemContainerStyle="{StaticResource ListViewItemStyle}">
<ListView.ItemTemplate>
<DataTemplate>
<local:CrossingControl />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我的 UserControl 中有一个按钮,我想将其 Command 绑定到 ViewModel 中的命令属性,该属性是列表本身的 DataContext ...
<UserControl ...>
<RelativePanel>
<StackPanel x:Name="crossedEntryPanel">
<Button Command="{Binding DataContext.DeleteCommand,
RelativeSource={RelativeSource Mode=TemplatedParent}}"
CommandParameter="{Binding}"
Run Code Online (Sandbox Code Playgroud)
我尝试过使用 ElementName 绑定,但它似乎不起作用(我想是因为我的 listview 元素名称是在另一个 xaml 文件中定义的)。我也尝试过上面的RelativeSource 绑定,但这似乎也不起作用。我怎样才能正确绑定它?
在我的应用程序中,我有2个视图.列表(GridView)和表单.我正在改变这个线程中提出的视图: WPF MVVM切换用户控件
现在我有一个问题,如何在单击编辑后传递所选项目的ID以显示带有编辑表单的新视图.
简单的应用程序列出所有项目,添加新的,删除和编辑.我怎样才能在MVVWM中做到这一点?
我只是想创建一个简单的应用程序,左侧有菜单:
单击列表时,它会显示带有列表和3个按钮的UC:添加,编辑,删除.点击添加后,编辑它会显示带有特定值的表格的UC(编辑时).我怎么能实现这个?