[英]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}}"
又怎樣?
我總是使用以下方法。 我將常規綁定留給View
的DataContext
,所以在您的示例中
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.