1

我正在构建我的第一个 Caliburn WPF 应用程序,我发现自己遇到了以下问题。

我有一个父视图,加载了两个用户控件:搜索和结果。在搜索用户控件上单击搜索按钮时,我不想在结果用户控件中加载结果。

父视图:

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

父虚拟机


[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"/>

搜索虚拟机


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使用事件。您可以在一个视图模型中发布事件并在另一个视图模型中订阅该事件。这使模型保持解耦 - 唯一的耦合由事件本身完成 - 您可以在其中存储要传输的数据。

于 2012-07-09T09:57:52.600 回答