如何在 DLL 中为 windows 使用视图模型
How to use view models for windows inside a DLL
我是 WPF 新手。这是 xaml 定义一个 window 定义在一个 DLL 中:
<Window x:Class="MyNamespace.MyClass"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
d1p1:Ignorable="d"
xmlns:attachedProperties="clr-namespace:MyNamespace.AttachedProperties"
xmlns:viewModels="clr-namespace:MyNamespace.ViewModels"
DataContext="{Binding Source={StaticResource VmLocator}}"
Title="{Binding MyVm.MyTitle, Mode=OneTime}" Height="300" Width="460">
<Window.Resources>
<viewModels:ViewModelLocatorTestSteps x:Key="VmLocator" d:IsDataSource="True" />
</Window.Resources>
当客户端代码构造这个window对象时,抛出这个异常:
Cannot find resource named 'VmLocator'
如何提前定义资源,以便在需要时存在?我也更喜欢启用 Intellisense 的解决方案。这是我第一次尝试在 DLL 中定义 window。
使用 Visual Studio 2013.
如果您希望 Window 创建自己的 DataContext,您可以将其粘贴在代码隐藏的构造函数中,避免将 VmLocator 设为资源的必要性。 WPF 控件(包括 Window)的资源可供该控件的子控件使用。
刚刚:
public MyNamespace()
{
InitializeComponents();
this.DataContext = new VmLocator();
}
如果您真的想让您的 DataContext 成为一种资源,您可以创建一个应用程序级资源并引用它。
此外 - 'MyNamespace' 对于 class 来说是一个非常令人困惑的名称 :)
我是 WPF 新手。这是 xaml 定义一个 window 定义在一个 DLL 中:
<Window x:Class="MyNamespace.MyClass"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
d1p1:Ignorable="d"
xmlns:attachedProperties="clr-namespace:MyNamespace.AttachedProperties"
xmlns:viewModels="clr-namespace:MyNamespace.ViewModels"
DataContext="{Binding Source={StaticResource VmLocator}}"
Title="{Binding MyVm.MyTitle, Mode=OneTime}" Height="300" Width="460">
<Window.Resources>
<viewModels:ViewModelLocatorTestSteps x:Key="VmLocator" d:IsDataSource="True" />
</Window.Resources>
当客户端代码构造这个window对象时,抛出这个异常:
Cannot find resource named 'VmLocator'
如何提前定义资源,以便在需要时存在?我也更喜欢启用 Intellisense 的解决方案。这是我第一次尝试在 DLL 中定义 window。
使用 Visual Studio 2013.
如果您希望 Window 创建自己的 DataContext,您可以将其粘贴在代码隐藏的构造函数中,避免将 VmLocator 设为资源的必要性。 WPF 控件(包括 Window)的资源可供该控件的子控件使用。
刚刚:
public MyNamespace()
{
InitializeComponents();
this.DataContext = new VmLocator();
}
如果您真的想让您的 DataContext 成为一种资源,您可以创建一个应用程序级资源并引用它。
此外 - 'MyNamespace' 对于 class 来说是一个非常令人困惑的名称 :)