希望使用新的x:Bind编译时绑定与MVVMLight和ViewModelLocator类。
如何将其更改为使用x:Bind?
DataContext="{Binding Login, Source={StaticResource Locator}}"源似乎不受支持,因此这失败了:
DataContext="{x:Bind Path=Login, Source={StaticResource Locator}}"那怎么做?
发布于 2016-01-14 13:03:39
我总是用下面的方法。我保留了对DataContext的View的常规绑定,所以在您的示例中不要使用
DataContext="{Binding Login, Source={StaticResource Locator}}"但在后面的代码中,我使用该DataContext设置ViewModel的一个属性,以便在同一View上的所有x:Binding中使用,如下所示:
private LoginViewModel ViewModel => DataContext as LoginViewModel;这样,当您需要x:绑定到您的视图时,您可以这样做:
{x:Bind ViewModel.UserName, Mode=OneWay}发布于 2016-01-13 18:42:37
您需要通过下面的代码公开这个属性
public sealed partial class MainPage : Page
{
public LoginViewModel Login
{
get
{
return Locator.Login;
}
}
public MainPage()
{
InitializeComponent();
}
}在xaml中,您可以在没有Source的情况下使用这个登录属性
DataContext="{x:Bind Login}"发布于 2016-05-02 14:52:48
一定要给你的Page.DataContext起个名字..。
<Page.DataContext>
<viewModels:SettingsPageViewModel x:Name="ViewModel"/>
</Page.DataContext>有了这个位置,您可以DataContext="{x:Bind ViewModel.Login}"
https://stackoverflow.com/questions/34773487
复制相似问题