绑定到mvvm中的常量值

时间:2014-10-10 09:34:32

标签: mvvm view binding constants

我有一个常量值(某些限制)我在viewmodel中工作,但我也需要它在我的视图中。最好的方法是什么?

常数:

private const int maxLevel = 4;

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

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

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

2 个答案:

答案 0 :(得分:0)

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

public int MaxLevel { get {return 4;} }

答案 1 :(得分: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}"