2016-06-22 24 views
0

我有一個可以容納4個不同的用戶控件的網頁,但其中只有一個人應該在同一時間可見。我想這樣做:能見度不觸發

<regControls:MyUserControl1 Visibility="{Binding Ctrl1, Mode=TwoWay, Converter={StaticResource BoolToVisibilityConverter}" /> 
    <regControls:MyUserControl2 Visibility="{Binding Ctrl2, Mode=TwoWay, Converter={StaticResource BoolToVisibilityConverter}" /> 
    <regControls:MyUserControl3 Visibility="{Binding Ctrl3, Mode=TwoWay, Converter={StaticResource BoolToVisibilityConverter}" /> 
    <regControls:MyUserControl4 Visibility="{Binding Ctrl4, Mode=TwoWay, Converter={StaticResource BoolToVisibilityConverter}" /> 

但是,當組件初始化時,轉換器根本不會被觸發。儘管我將財產綁定並提出執行更改。

我寧願不要初始化不同的控件後面的代碼中。我使用WP8 Silverlight(不是WP 8.1)。我錯過了什麼?編號:

我開始明白這個問題。但我不知道如何解決它。我們使用GWT所以我從GWT層,告訴我展示一下一個電話:

public void ShowMyUserControl1() 
{ 
    SimpleIoc.Default.Register<MyPageViewModel>(); 
    SimpleIoc.Default.Register<MyUserControl1ViewModel>(); 
    SimpleIoc.Default.Register<MyUserControl2ViewModel>();    
    SimpleIoc.Default.Register<MyUserControl3ViewModel>(); 
    SimpleIoc.Default.Register<MyUserControl4ViewModel>(); 

    navigationService.NavigateTo(typeof(MyPageViewModel).FullName); 

    var viewModel = SimpleIoc.Default.GetInstance<MyPageViewModel>(); 
    viewModel.DisplayMyUserControl1(); 
} 

public void ShowMyUserControl2() 
{ 
    .... 
} 

這裏的問題是,視圖模型被稱爲並初始化組件之前的屬性觸發。這裏的問題也是我不知道從GWT調用哪個方法。它可能是ShowMyUserControl1或ShowMyUserControl2(或者請求顯示控件3或4的方法,所以我需要告訴它,並且同時將參數傳遞給正確的視圖模型,參數來自GWT.Messenger(MVVMLight)不會在這裏工作。因爲任何控制已經初始化,註冊聽這些消息之前發送消息,用戶可以離開應用程序,並關閉手機,然後再回來,所以我需要想到的是,視圖模型沒有按「噸VS存在,需要進行登記。

回答

0

是DataContext的(視圖模型)的支持INotifyPropertyChange? 在控制檯輸出任何綁定錯誤? 物業創建斷點,這是否暗示?

+0

是的,我沒有別的問題其他意見。不知道如何跟蹤Windows Phone 8.0的綁定錯誤。是的,它在設置時破壞了財產。 – peuhse

+0

創建新的轉換器並替換其中一個。並在中創建斷點。檢查propertyChange上的inputparams。並顯示viewModel代碼。 – Arheus

+0

查看我更新的問題。新的轉換器不會改變任何東西。使用mvvmlights屬性更改,即RaisePropertyChange(()=>「PropertyName」) – peuhse