我想打开一个新窗口,而不是另一个窗口中的视图。我有一个通知图标,其中有一个菜单,我想从我的MainViewModel打开一个新窗口。可以吗?它出现了这个错误。
System.InvalidOperationException
HResult=0x80131509
Message=Window must be the root of the tree. Cannot add Window as a child of Visual.
Source=PresentationFramework
我怀疑这是我的MainView Xaml视图中的行:MvxWpfView
<MenuItem Header="Settings" mvx:Bi.nd="Command SettingsCommand">
<MenuItem.Icon>
<Image Width="16" Height="16" Source="/Images/settings.png"/>
</MenuItem.Icon>
</MenuItem>`
在我的Viewmodel中,我从其中调用新窗口的是以下代码:
public class MainViewModel : MvxViewModel
{
private readonly IMvxNavigationService navigationService;
public IMvxCommand SettingsCommand { get; set; }
public MainViewModel( IMvxNavigationService _navigationService)
{
navigationService = _navigationService;
GenerateMenu();
ExitCommand = new MvxCommand(Exit);
**SettingsCommand = new MvxAsyncCommand(async () => await navigationService.Navigate<BolusViewModel>()); **
}
}
我尝试作为新窗口打开的ViewModel如下所示:
public class BolusViewModel : MvxViewModel
{
private readonly IMvxNavigationService navigationService;
public BolusViewModel(IMvxNavigationService _navigationService)
{
navigationService = _navigationService;
}
}
最后,尝试打开的窗口如下所示:代码隐藏:
[MvxContentPresentation]
[MvxWindowPresentation(Identifier = nameof(BolusViewModel), Modal = false)]
public partial class BolusView : MvxWindow
{
public BolusView()
{
InitializeComponent();
}
}
XAML:
<views:MvxWindow
xmlns:views="clr- namespace:MvvmCross.Platforms.Wpf.Views;assembly=MvvmCross.Platforms.Wpf"
xmlns:mvx="clr- namespace:MvvmCross.Platforms.Wpf.Binding;assembly=MvvmCross.Platforms.Wpf"
x:Class="TechnicalToolboxV3.Wpf.BolusView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:Behaviors="http://schemas.microsoft.com/xaml/behaviors"
xmlns:local="clr-namespace:TechnicalToolboxV3.Wpf"
xmlns:converters="clr-namespace:TechnicalToolboxV3.Wpf.Converters"
mc:Ignorable="d"
d:DesignHeight="700" d:DesignWidth="1200" FontSize="14" Title="Bolus Controller" Icon="..\Images\Bolus.jpg" Background="#FFBEBEBE" Cursor="{Binding MouseIcon, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
<views:MvxWindow.Resources>
<converters:SystemColorToSolidBrushConverter x:Key="ColorConvert"/>
</views:MvxWindow.Resources>
</views:MvxWindow>
1条答案
按热度按时间bpzcxfmw1#
这似乎是工作...我删除了这些行从我的代码背后的窗口我想打开。
XAMIMAX谢谢你提出这一点,它给了我一个胶水什么我应该寻找,Thanx