将PropertyChanged事件从静态ObservableCollection路由到非静态包装类

时间:2017-07-10 20:08:55

标签: data-binding static uwp-xaml windowsiot windows-iot-core-10

我正在尝试将一个ObservableCollection绑定到UI中的图表控件,该ObservableCollection在后台线程中填充。 因此我有一个静态类“Core”,它有一个成员“DataState”。此DataState类拥有ObservableCollection“SensorData”,它填充在上述后台任务中。

由于没有可能为静态属性执行UWP XAML绑定,我编写了一个非静态包装类“DataWrapper”,它引用了静态Core.DataState.SensorData-object。

以下是我的一些代码:

Core.cs:

public static partial class Core
{
    private static DataState m_DataState;
    public static DataState DataState
    {
        get
        {
            return m_DataState;
        }
        set
        {
            if (value != null)
            {
                m_DataState = value;
            }
        }
    }
}

DataState.cs:

public class DataState
{
    private ObservableCollection<SensorData> m_SensorData = new ObservableCollection<SensorData>();
    public ObservableCollection<SensorData> SensorData
    {
        get
        {
            return m_SensorData;
        }
        set
        {
            if (value != null)
                m_SensorData = value;
        }
    }

DataWrapper.cs:

public class DataWrapper
{
    public ObservableCollection<SensorData> SensorData
    {
        get
        {
            return Core.DataState.SensorData;
        }
    }
}

XAML:

<Charting:LineSeries Name="MySeries" Title="Title" IndependentValuePath="X" DependentValuePath="Y" ItemsSource="{x:Bind DataWrapper.SensorData}"></Charting:LineSeries>

其中X和Y是SensorData-Object中包含的变量。

所以,如果我等待显示Charting-Control,直到ObservableCollection中有一些数据,这个数据很好地绘制到我的Control中。但在此之后,最近添加的数据不再被绘制。

因此,我正在寻找一种方法将PropertyChanged-Event从Core.DataState.SensorData以某种方式路由到DataWrapper.SensorData。有可能这样做吗?

这个问题的结构对你来说是否清晰?我认为我的描述听起来有点令人困惑......

提前感谢您的帮助: - )

0 个答案:

没有答案