如何将xBind与ViewModelLocator一起使用?

时间:2016-01-13 17:44:11

标签: c# mvvm-light win-universal-app

想要使用与MVVMLight和x:Bind类的新ViewModelLocator编译时绑定。

如何更改此项以使用x:Bind?

DataContext="{Binding Login, Source={StaticResource Locator}}"

似乎不支持来源,因此失败了:

DataContext="{x:Bind Path=Login, Source={StaticResource Locator}}"

那怎么样?

3 个答案:

答案 0 :(得分:2)

我总是使用以下方法。 我保留DataContext的{​​{1}}的常规绑定,所以在你的例子中留下

View

但在后面的代码中,我使用DataContext="{Binding Login, Source={StaticResource Locator}}" 设置DataContext的属性,以便在同一ViewModel的所有x:Binding中使用,如下所示:< / p>

View

当你需要x:在视图中绑定时,你可以这样做:

private LoginViewModel ViewModel => DataContext as LoginViewModel;

答案 1 :(得分:0)

您需要通过后面的代码公开此属性,如

public sealed partial class MainPage : Page
{
    public LoginViewModel Login
    {
        get
        {
            return Locator.Login;
        }
    }

    public MainPage()
    {
        InitializeComponent();
    }
}

在xaml中,您可以使用此登录属性而不使用像

这样的源
DataContext="{x:Bind Login}"

答案 2 :(得分:-1)

确保为Page.DataContext指定名称...

<Page.DataContext>
    <viewModels:SettingsPageViewModel x:Name="ViewModel"/>
</Page.DataContext>

有了这个,你可以DataContext="{x:Bind ViewModel.Login}"