无控制的MVVM数据绑定

时间:2014-06-14 23:18:33

标签: c# xaml data-binding mvvm mvvm-light

我正在使用C#,XAML和MVVMLight来创建MVVM应用程序,但是我遇到了如何将数据从ViewModel绑定到模型而没有在控件上显示的问题。例如,我在模型中有一个数据库,我需要确定它是否存在且具有有效数据。我在ViewModel中提供了这个,我只想将值(可以是布尔值,字符串或其他)绑定到背景中的View代码,而不显示在XAML控件上(有点像资源) 。问题是我无法弄清楚如何做到这一点。

<Page.Resources>
    <system:String x:Key="StringId" Text="{Binding Text}" />
</Page.Resources>

Text是数据上下文提供的字段,如果有一种简单的方法可以访问数据上下文的值而不使用ViewModel文件夹中的任何包含,它也可能有用。

1 个答案:

答案 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}"/>