我正在Visual Studio中使用应用程序插件。我已经创建了WPF窗口,并且需要将其DataContext设置为已建立的类。此类实现了原始应用程序(我在项目中引用的.dll)的接口。
我正在构建主应用程序的几个不同版本,并且每个版本都有自己的API .dll。由于存在不同的.dll版本,因此我将通过正在使用的构建配置(在.csproj中定义)动态加载正确的版本。
这是我的Xaml中的窗口定义:
<Window x:Class="MyNamespace.MyClass.MonitorWindow"
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:local="clr-namespace:MyNamespace.MyClass"
mc:Ignorable="d" Title="MyClass Monitor" >
<Window.DataContext>
<local:MonitorCommand></local:MonitorCommand>
</Window.DataContext>
这是我在.csproj中通过配置加载.dll的位置
<Reference Include="RevitAPI" Condition="'$(Configuration)' == 'Revit2018'">
<HintPath>C:\Program Files\Autodesk\Revit 2018\RevitAPI.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="RevitAPI" Condition="'$(Configuration)' == 'Revit2020'">
<HintPath>C:\Program Files\Autodesk\Revit 2020\RevitAPI.dll</HintPath>
<Private>False</Private>
</Reference>
设计器不起作用,这是我收到的错误消息之一:
Error XDG0008 The name "MonitorCommand" does not exist in the namespace "clr-namespace:MyNamespace.MyClass". MyNamespace MonitorWindow.xaml 10
Intellisense会自动完成DataContext中的“ MonitorCommand”类,但是,它将其标记为错误。
我认为错误可能是由于Xaml无法识别外部.dll所致,因为当我从MonitorCommand中删除接口实现时,错误消失了。
我的目标是将.Xaml正确链接到我的类,并能够在窗口中访问其属性。
请让我知道您是否遇到过这样的事情!在此先感谢
xmlns应该指向名称空间,而不是类。
您的定义应类似于:xmlns:local =“ clr-namespace:MyNamespace”。
然后在您的类中,添加一个指向命令(属于您的命令类型)的属性。
然后,窗口的DataContext应该是您的类的实例。
在窗口的内容(您的视图)中添加一个按钮,并使其具有Command属性
绑定到包含命令的属性。