如何从MainWindow访问UserControl的ViewModel中的数据

时间:2014-07-30 09:34:01

标签: wpf mvvm user-controls

我有一个UserControl(MVVM模式)和一个MainWindow。 UserControl模型获取所有数据并保留它,现在我想从MainWindow访问这些数据并将其绑定到Control。

但是怎么样?

修改

UserControl.cs:

public UserControl()
{
    InitializeComponent();
    DataContext = new ViewModel.UserControlViewModel(
                       new Model.UserControlModel(this.facade));
}

ViewModel.cs(来自UserControl.cs)

public string Status
{
    get { return _model.Status; }
    set
    {
        if (value == _model.Status)
        {
            return;
        }
            _model.Status = value;
            base.NotifyPropertyChanged();
        }
    } 

MainWindow.xaml

<StatusBarItem Grid.Column="1">
    <TextBlock x:Name="txtStatus" Text="{Binding Path=???,
                                    Mode=TwoWay,
                                    UpdateSourceTrigger=PropertyChanged}" />
</StatusBarItem>

所以它不那么容易(可能只为我;))为此设置DataContext

1 个答案:

答案 0 :(得分:0)

你可以创建一个MainWindowViewModel来保存这样的数据:

public class MainWindowViewModel {
    public AllDataType AllData {get;set;}
}

现在您将MainWindows DataContext绑定到此ViewModel并访问数据:

<MainWindow>
    <ctrl:UserControl DataContext="{Binding AllData}"/>
    <AnotherControl DataContext="{Binding AllData}"/>
</MainWindow>