为 Avalonia 声明设计时 ViewModel Window
Declaring Design-Time ViewModel for Avalonia Window
我正在寻找为 Avalonia 声明设计时 ViewModel 的正确方法 window。
一些样本表明
d:DataContext="{d:DesignInstance viewModels:LoginViewModel, IsDesignTimeCreatable=True}"
这抛出
XamlParseException at 5:5: Unable to resolve type DesignInstance from namespace http://schemas.microsoft.com/expression/blend/2008
默认 Avalonia MVVM 模板建议
<Design.DataContext>
<vm:MainWindowViewModel/>
</Design.DataContext>
如果 ViewModel 接受参数,它会抛出
XamlLoadException at 16:10: Unable to find public constructor for type Demo.CloseNonModalDialog:Demo.CloseNonModalDialog.CurrentTimeDialogViewModel()
我想添加一个默认的无参数构造函数是一种选择。
对于 MvvmLight/WPF,我曾经将 ViewLocator 作为静态资源引用
DataContext="{Binding Source={StaticResource Locator}, Path=MainWindow}"
这是一个选项,虽然我还没有找到声明和引用资源的正确方法。
此处推荐的方法是什么?如果我想显示设计时数据,我会说只有第三个选项有效。这不是示例中显示的选项。
Unable to find public constructor for type Demo.CloseNonModalDialog:Demo.CloseNonModalDialog.CurrentTimeDialogViewModel()
您可以通过 x:Arguments
XAML 指令指定参数,参见 https://docs.microsoft.com/en-us/dotnet/desktop/xaml-services/xarguments-directive
That's an option, although I haven't yet found the right way to declare and reference the resource.
我建议声明 DesignData
class 并使用 x:Static
,这会给你更多的灵活性。 e. g.
class DesignData
{
public MyViewModel MyViewModel => new MyViewModel(...);
}
d:DataContext="{x:Static local:DesignData.MyViewModel}"
与 StaticResource 方法不同,在正常的应用程序执行期间也不会创建视图模型。
我正在寻找为 Avalonia 声明设计时 ViewModel 的正确方法 window。
一些样本表明
d:DataContext="{d:DesignInstance viewModels:LoginViewModel, IsDesignTimeCreatable=True}"
这抛出
XamlParseException at 5:5: Unable to resolve type DesignInstance from namespace http://schemas.microsoft.com/expression/blend/2008
默认 Avalonia MVVM 模板建议
<Design.DataContext>
<vm:MainWindowViewModel/>
</Design.DataContext>
如果 ViewModel 接受参数,它会抛出
XamlLoadException at 16:10: Unable to find public constructor for type Demo.CloseNonModalDialog:Demo.CloseNonModalDialog.CurrentTimeDialogViewModel()
我想添加一个默认的无参数构造函数是一种选择。
对于 MvvmLight/WPF,我曾经将 ViewLocator 作为静态资源引用
DataContext="{Binding Source={StaticResource Locator}, Path=MainWindow}"
这是一个选项,虽然我还没有找到声明和引用资源的正确方法。
此处推荐的方法是什么?如果我想显示设计时数据,我会说只有第三个选项有效。这不是示例中显示的选项。
Unable to find public constructor for type Demo.CloseNonModalDialog:Demo.CloseNonModalDialog.CurrentTimeDialogViewModel()
您可以通过 x:Arguments
XAML 指令指定参数,参见 https://docs.microsoft.com/en-us/dotnet/desktop/xaml-services/xarguments-directive
That's an option, although I haven't yet found the right way to declare and reference the resource.
我建议声明 DesignData
class 并使用 x:Static
,这会给你更多的灵活性。 e. g.
class DesignData
{
public MyViewModel MyViewModel => new MyViewModel(...);
}
d:DataContext="{x:Static local:DesignData.MyViewModel}"
与 StaticResource 方法不同,在正常的应用程序执行期间也不会创建视图模型。