1

私は最初の Caliburn WPF アプリケーションを構築していますが、次の問題に直面しています。

検索と結果の 2 つのユーザー コントロールをロードする親ビューがあります。検索ユーザー コントロールで検索ボタンをクリックすると、結果ユーザー コントロールに結果をロードしたくありません。

親ビュー:

<ContentControl x:Name="SearchViewModel"/>
<ContentControl x:Name="ResultsViewModel"/>

親 VM


[Export(typeof(IMainViewModel))]
public class ParentViewModel : Screen, IMainViewModel{

public SearchViewModel SearchViewModel { get; set; }
public ResultsViewModel ResultsViewModel { get; set; }
public ParentViewModel()
{
    SearchViewModel = new SearchViewModel();
    ResultsViewModel = new ResultsViewModel();
}
}

検索ビュー

<TextBox x:Name="Term"/>        
<Button Content="Search" x:Name="Search"/>

VM の検索


public class SearchViewModel : PropertyChangedBase
{
        private string _term;

        public string Term
        {
            get { return _term; }
            set
            {
                _instrumentId = value;
                NotifyOfPropertyChange(() => _term);
            }
        }

        public void Search()
        {
            //Call WCF Service
            //Send results to results user control?
        }
}

では、実際にはどうすれば異なるユーザーコントロール間でデータ/メソッドを渡したりアクセスしたりできますか? caliburn micro を使用してモデルを表示できますか?

4

1 に答える 1

3

Caliburn Micro Event Aggregator経由でイベントを使用できます。1 つのビューモデルでイベントを発行し、別のビューモデルでそのイベントをサブスクライブできます。これにより、モデルが分離されたままになります。唯一の結合はイベント自体によって行われ、転送するデータを格納できます。

于 2012-07-09T09:57:52.600 に答える