gpt4 book ai didi

c# - 当 Enum 在 ViewModel 中时将 Enum 值作为 CommandParameter 传递

转载 作者:太空狗 更新时间:2023-10-29 17:57:20 26 4
gpt4 key购买 nike

我仍在学习 WPF 绑定(bind)并且为此苦苦挣扎了一段时间。我在 ViewModel 中有一个枚举存储,如下所示:

namespace theNamespace
{
public class frmSetupViewModel
{
public enum LocationLabelType {Location, Sample}
...
}
}

我想让一个按钮通过 CommandParameter 传递其中一个值,但不知道如何让它工作。到目前为止,这些是我尝试过的组合:

//When value is inside the frmSetupViewModel, these do not work
CommandParameter="{x:Static local:LocationLabelType.Location}" //'Type was not found.'
CommandParameter="{x:Static local:frmSetupViewModel+LocationLabelType.Location}" //'Type was not found.'
CommandParameter="{x:Static local:frmSetupViewModel.LocationLabelType.Location}" //'Type was not found.'

CommandParameter="{Binding {x:Static local:LocationLabelType.Location}}" //'Value cannot be null'
CommandParameter="{Binding {x:Static local:frmSetupViewModel+LocationLabelType.Location}}" //'Value cannot be null'
CommandParameter="{Binding {x:Static local:frmSetupViewModel.LocationLabelType.Location}}" //'Value cannot be null'

但是如果我像这样将枚举移出 VM 并移入 namespace :

namespace theNamespace
{
public enum LocationLabelType {Location, Sample}

public class frmSetupViewModel
{
...
}
}

这很好用:

//Works when enum is moved to Namespace
CommandParameter="{x:Static local:LocationLabelType.Location}"

我假设我的 CommandParameter 遗漏了什么?

VM 通过 DataContext 加载:

<Window.DataContext>
<local:frmSetupViewModel />
</Window.DataContext>

谢谢。

最佳答案

这个工作正常:

CommandParameter="{x:Static uiTest:MainWindow+LocationLabelType.Location}"

你用这段代码运行了这个项目?WPF 设计器可以显示此错误 //'Type was not found.' 如果您不构建项目,因为它没有看到枚举的类型。

关于c# - 当 Enum 在 ViewModel 中时将 Enum 值作为 CommandParameter 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16217434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com