2016-01-13 45 views
1

想要使用新的x:Bind編譯時綁定MVVMLight和ViewModelLocator類。如何在ViewModelLocator中使用xBind?

如何改變這個使用x:綁定?

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

來源似乎並不支持,所以這次失敗:

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

那麼如何?

回答

2

我總是用下面的方法。 我離開常規結合的ViewDataContext所以在你的榜樣離開

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

但在後面的代碼我用DataContext成立ViewModel的性質上相同View在所有x:Binding使用,像這樣:

private LoginViewModel ViewModel => DataContext as LoginViewModel; 

,當你需要X這樣的話:綁定在你看來,你可以這樣做:

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

您需要通過後面的代碼揭露這個屬性像

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

    public MainPage() 
    { 
     InitializeComponent(); 
    } 
} 

比你的XAML可以消耗這個登錄屬性,而不象源

DataContext="{x:Bind Login}" 
-1

確保你給你的Page.DataContext一個名字......

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

有了到位,你可以DataContext="{x:Bind ViewModel.Login}"

相關問題