0

所以我有一个主要的 MainViewModel 收集和分发大量实时数据(每 0.1 秒更改一次)。目前我所有的控件都在引用我的 MainViewModel。

我正在使用 UserControl 控件来复制许多相同类型的数字仪表的对象。

我的问题是,是否有将 MainViewModel 中的数据“推送”或“引用”到 ControlViewModel 的最佳做法?我想到的目的是将我需要的 DependencyProperties 干净地隐藏在 ControlViewModel 中,并使 MainViewModel 尽可能干净整洁。

MVVMLight 消息传递是一种选择吗?活动合适吗?我可以设置从 ControlViewModel 到 MainViewModel 的绑定,以便在更新 MainViewModel 数据时,它会反映在 ControlViewModel 中吗?

4

1 回答 1

2

如果我正确理解了这个问题,我认为您可能只想创建一个ControlViewModel在您的 s 中公开一组 s的属性MainViewModel

public class MainViewModel : INotifyPropertyChanged
{
    public IEnumerable<ControlViewModel> Controls { get; private set; }
}

您可以在构造函数中使用所有必要的ControlViewModel对象来设置它。如果您可能添加或删除仪表,请更改IEnumerableObservableCollection.

然后对于您的仪表,您将使用 anItemsControl和 set ItemsSource="{Binding Controls}"。这将自动使DataContext每个项目的ControlViewModels 之一。

要使用仪表控件渲染项目,请ItemTemplate设置ItemsControl

<ItemsControl.ItemTemplate>
    <DataTemplate DataType="{x:Type YourNamespace:ControlViewModel}">
        <YourNamespace:DigitalGauge />
    </DataTemplate>
</ItemsControl.ItemTemplate>
于 2012-09-28T14:36:24.780 回答