绑定到mvvm中的常量值

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

我有恒定的值(某些限制),我在视图模型中使用它,但在我的视图中也需要它。最好的方法是什么?

常量:

private const int maxLevel = 4;

我真的需要为每个常量创建一个属性并像这样绑定到它:

private const int _maxLevel = 4;
public int MaxLevel
{
    get { return _maxLevel; }
    set
    {
        RaisePropertyChanged("MaxLevel");
    }
}

也许我可以像使用字符串一样将所有这些值存储在* .resx文件中?这里的最佳做法是什么?

mvvm view binding constants
2个回答
0
投票

丢失二传手。属性更改通知仅需要通知绑定元素该值已更改。由于MaxLevel是一个常数,因此它的值永远不会改变,因此您不需要它。您不能直接绑定到常量,因为在实践中,编译器会将值嵌入到在编译时访问该常量的代码中,因此对于不太可能需要将来修改的常量属性,我通常会这样做:

public int MaxLevel { get {return 4;} }

0
投票

您可以做:

namespace Foo.ViewModels
{
  public class MainWindowViewModel{
    public const int MaxLevel = 4; 
    ...
  }
}

并在视图中使用它:

<Label Content="{x:Static Foo.ViewModels:MainWindowViewModel.MaxLevel}"></Label>

或者一般来说,绑定到:

"{x:Static MyNameSpace:MyClass.MY_CONSTANT}"
© www.soinside.com 2019 - 2024. All rights reserved.