2016-06-22 7 views
0

4つの異なるユーザーコントロールを含むことができるページがありますが、そのうちの1つだけを一度に表示する必要があります。私はこのようなことをしたい:UserControlの可視性がトリガーされていない

<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からの引数を含む正しいビューモデルにパラメータを渡す必要があります。このメッセージは、コントロールが初期化され、これらのメッセージを聞くために登録される前に送信されるため、ユーザーはアプリを離れて電話を切ってから再び戻ることができるので、ビューモデルが「トンが存在し、登録する必要があります。

答えて

0

はDataContextの(ViewModelには)INotifyPropertyChangeをサポートしていますか? VSでコンソール出力内の任意の結合エラーを? プロパティにブレークポイントを作成します。それがヒントしていますか?

+0

はい、私は他のを持っていません問題その他の意見Windows Phone 8.0のバインディングエラーを追跡する方法を知らないはい、それを設定するとき、それは不動産を破ります。 – peuhse

+0

新しいコンバータを作成し、その1つを置き換えます。そしてブレークポイントを作成します。propertyChangeでinputparamsをチェックします。また、viewModelコードを表示します。 – Arheus

+0

更新された質問をご覧ください。新しいコンバータは何も変更しません。 mvvmlightsプロパティの変更、つまりRaisePropertyChange(()=> "PropertyName")を使用する – peuhse

関連する問題