想要使用与MVVMLight和x:Bind
类的新ViewModelLocator
编译时绑定。
如何更改此项以使用x:Bind?
DataContext="{Binding Login, Source={StaticResource Locator}}"
似乎不支持来源,因此失败了:
DataContext="{x:Bind Path=Login, Source={StaticResource Locator}}"
那怎么样?
答案 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}"