Visual Studio中的XAML编辑器窗口中的“实时”数据和正在运行的应用程序

问题描述 投票:2回答:1

我正在尝试使用MVVM Light为SparxEA实现插件。我发现有趣的一件事是在MVVM Light的过程中提到的窗口中看到“实时”数据。所以,我想做同样的事情。由于我有类库项目,我不能使用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。当我运行应用程序并想要实例化窗口时,我获得此异常(从捷克语翻译):未找到标记为AboutData的源。源名称区分大小写。

当我用DataContext删除第10行时,我无法在VS中看到绑定数据,另一方面,当我在代码中分配DataContext时,应用程序工作正常。我的理解是,有一种方法可以在VS和运行app中运行而不会改变任何东西。

你知道我做错了什么吗?

如果需要,整个代码都在https://github.com/SlavekRydval/GoatJira

wpf visual-studio xaml mvvm mvvm-light
1个回答
1
投票

如果将DataContext移动到资源部分之后会发生什么,即

<Window blah=for>
    <Window.Resources>
        <ResourceDictionary>
            <viewmodel:AboutViewModel x:Key="AboutData"/>
        </ResourceDictionary>
    </Window.Resources>

 <Window.DataContext>
      <StaticResourceExtension ResourceKey="AboutData"/>
</Window.DataContext>
© www.soinside.com 2019 - 2024. All rights reserved.