我正在使用C#,XAML和MVVMLight来创建MVVM应用程序,但是我遇到了如何将数据从ViewModel绑定到模型而没有在控件上显示的问题。例如,我在模型中有一个数据库,我需要确定它是否存在且具有有效数据。我在ViewModel中提供了这个,我只想将值(可以是布尔值,字符串或其他)绑定到背景中的View代码,而不显示在XAML控件上(有点像资源) 。问题是我无法弄清楚如何做到这一点。
<Page.Resources>
<system:String x:Key="StringId" Text="{Binding Text}" />
</Page.Resources>
Text是数据上下文提供的字段,如果有一种简单的方法可以访问数据上下文的值而不使用ViewModel文件夹中的任何包含,它也可能有用。
答案 0 :(得分:1)
尝试将属性绑定到Xaml中的静态资源没有意义。因为,当您创建静态资源时,您不希望在xaml中重复相同的变量。但是这个目标可以通过绑定实现,不同之处在于ViewModel的绑定可以从代码中修改此属性。
现在,如果您想拥有可以从ViewModel修改的属性,只需要绑定的位置:
在您的代码中:
private string _property;
public string Property
{
get { return _property; }
set { _property= value; RaisePropertyChanged("Property"); }
}
但是你想要一个xaml中的属性:
<UserControl.Resources>
<System:String x:Key="Property">Text</System:String>
</UserControl.Resources>
Binding将是:
<Label Content="{StaticResource Property}"/>