簡體   English   中英

如何在ViewModelLocator中使用xBind?

[英]How to use xBind with ViewModelLocator?

想要與MVVMLight和ViewModelLocator類一起使用新的x:Bind編譯時綁定。

如何將其更改為使用x:Bind?

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

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

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

又怎樣?

我總是使用以下方法。 我將常規綁定留給ViewDataContext ,所以在您的示例中

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

但是在后面的代碼中,我使用該DataContext來設置ViewModel的屬性以在同一View所有x:Binding使用,如下所示:

private LoginViewModel ViewModel => DataContext as LoginViewModel;

這樣,當您在視圖中需要x:Bind時,可以執行以下操作:

{x:Bind ViewModel.UserName, Mode=OneWay}

您需要通過像下面這樣的代碼來公開此屬性

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

    public MainPage()
    {
        InitializeComponent();
    }
}

比起您的xaml,您無需使用Source就可以使用此登錄屬性,例如

DataContext="{x:Bind Login}"

確保給您的Page.DataContext命名...

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

有了它,您就可以DataContext="{x:Bind ViewModel.Login}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM