"Live" 数据在 XAML 编辑器中 window 在 Visual Studio 和 运行 应用程序中
"Live" data in XAML editor window in Visual Studio and running application
我正在尝试使用 MVVM Light 为 SparxEA 实现一个插件。我发现有趣的一件事是在 window 中看到“实时”数据,正如 MVVM Light 课程中提到的那样。所以,我也想这样做。因为我有 Class 库项目,所以我不能使用 App.XAML。
在 XAML 我有这个代码:
<Window x:Class="GoatJira.View.About"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:GoatJira.View"
xmlns:viewmodel="clr-namespace:GoatJira.ViewModel"
mc:Ignorable="d"
Title="{Binding Path=AboutTitle}" Height="322.613" Width="573.608" ResizeMode="NoResize" ShowInTaskbar="False" WindowStartupLocation="CenterScreen" Initialized="Window_Initialized"
DataContext="{Binding Source={StaticResource ResourceKey=AboutData}}"
>
<Window.Resources>
<ResourceDictionary>
<viewmodel:AboutViewModel x:Key="AboutData"/>
</ResourceDictionary>
</Window.Resources>
…
这在 Visual Studio IDE 中非常有效。当我 运行 应用程序并想要实例化 window 时,我得到了这个异常(翻译自捷克语): 未找到标记为 AboutData 的源。来源名称区分大小写。
当我删除带有 DataContext 的第 10 行时,我在 VS 中看不到绑定数据,另一方面,当我在代码中分配 DataContext 时,应用程序工作正常。我的理解是,有一种方法可以在 VS 和 运行ning 应用程序中运行而无需更改任何内容。
你知道我做错了什么吗?
如果需要,整个代码位于https://github.com/SlavekRydval/GoatJira。
如果将 DataContext 移动到资源部分之后会发生什么,即
<Window blah=for>
<Window.Resources>
<ResourceDictionary>
<viewmodel:AboutViewModel x:Key="AboutData"/>
</ResourceDictionary>
</Window.Resources>
<Window.DataContext>
<StaticResourceExtension ResourceKey="AboutData"/>
</Window.DataContext>
我正在尝试使用 MVVM Light 为 SparxEA 实现一个插件。我发现有趣的一件事是在 window 中看到“实时”数据,正如 MVVM Light 课程中提到的那样。所以,我也想这样做。因为我有 Class 库项目,所以我不能使用 App.XAML。
在 XAML 我有这个代码:
<Window x:Class="GoatJira.View.About"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:GoatJira.View"
xmlns:viewmodel="clr-namespace:GoatJira.ViewModel"
mc:Ignorable="d"
Title="{Binding Path=AboutTitle}" Height="322.613" Width="573.608" ResizeMode="NoResize" ShowInTaskbar="False" WindowStartupLocation="CenterScreen" Initialized="Window_Initialized"
DataContext="{Binding Source={StaticResource ResourceKey=AboutData}}"
>
<Window.Resources>
<ResourceDictionary>
<viewmodel:AboutViewModel x:Key="AboutData"/>
</ResourceDictionary>
</Window.Resources>
…
这在 Visual Studio IDE 中非常有效。当我 运行 应用程序并想要实例化 window 时,我得到了这个异常(翻译自捷克语): 未找到标记为 AboutData 的源。来源名称区分大小写。
当我删除带有 DataContext 的第 10 行时,我在 VS 中看不到绑定数据,另一方面,当我在代码中分配 DataContext 时,应用程序工作正常。我的理解是,有一种方法可以在 VS 和 运行ning 应用程序中运行而无需更改任何内容。
你知道我做错了什么吗?
如果需要,整个代码位于https://github.com/SlavekRydval/GoatJira。
如果将 DataContext 移动到资源部分之后会发生什么,即
<Window blah=for>
<Window.Resources>
<ResourceDictionary>
<viewmodel:AboutViewModel x:Key="AboutData"/>
</ResourceDictionary>
</Window.Resources>
<Window.DataContext>
<StaticResourceExtension ResourceKey="AboutData"/>
</Window.DataContext>