首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将xBind与ViewModelLocator结合使用?

如何将xBind与ViewModelLocator结合使用?
EN

Stack Overflow用户
提问于 2016-01-13 17:44:11
回答 3查看 613关注 0票数 1

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

如何将其更改为使用x:Bind?

代码语言:javascript
复制
DataContext="{Binding Login, Source={StaticResource Locator}}"

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

代码语言:javascript
复制
DataContext="{x:Bind Path=Login, Source={StaticResource Locator}}"

那怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-14 13:03:39

我总是用下面的方法。我保留了对DataContextView的常规绑定,所以在您的示例中不要使用

代码语言:javascript
复制
DataContext="{Binding Login, Source={StaticResource Locator}}"

但在后面的代码中,我使用该DataContext设置ViewModel的一个属性,以便在同一View上的所有x:Binding中使用,如下所示:

代码语言:javascript
复制
private LoginViewModel ViewModel => DataContext as LoginViewModel;

这样,当您需要x:绑定到您的视图时,您可以这样做:

代码语言:javascript
复制
{x:Bind ViewModel.UserName, Mode=OneWay}
票数 5
EN

Stack Overflow用户

发布于 2016-01-13 18:42:37

您需要通过下面的代码公开这个属性

代码语言:javascript
复制
public sealed partial class MainPage : Page
{
    public LoginViewModel Login
    {
        get
        {
            return Locator.Login;
        }
    }

    public MainPage()
    {
        InitializeComponent();
    }
}

在xaml中,您可以在没有Source的情况下使用这个登录属性

代码语言:javascript
复制
DataContext="{x:Bind Login}"
票数 0
EN

Stack Overflow用户

发布于 2016-05-02 14:52:48

一定要给你的Page.DataContext起个名字..。

代码语言:javascript
复制
<Page.DataContext>
    <viewModels:SettingsPageViewModel x:Name="ViewModel"/>
</Page.DataContext>

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34773487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档