我有恒定的值(某些限制),我在视图模型中使用它,但在我的视图中也需要它。最好的方法是什么?
常量:
private const int maxLevel = 4;
我真的需要为每个常量创建一个属性并像这样绑定到它:
private const int _maxLevel = 4;
public int MaxLevel
{
get { return _maxLevel; }
set
{
RaisePropertyChanged("MaxLevel");
}
}
也许我可以像使用字符串一样将所有这些值存储在* .resx文件中?这里的最佳做法是什么?
丢失二传手。属性更改通知仅需要通知绑定元素该值已更改。由于MaxLevel是一个常数,因此它的值永远不会改变,因此您不需要它。您不能直接绑定到常量,因为在实践中,编译器会将值嵌入到在编译时访问该常量的代码中,因此对于不太可能需要将来修改的常量属性,我通常会这样做:
public int MaxLevel { get {return 4;} }
您可以做:
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}"