/// <summary>
    /// Updates the DataBundleCollection, wherever possible updating only values and not changing the bound variables, to avoid reinjecting the collection.
    /// </summary>
    public void CopyValuesFrom(DataBundleCollection dataBundleCollection)
    {
        if (dataBundleCollection == this)
        {
            return;
        }

        List <DataBundle> remainingDataBundles = dataBundles.Where(db => dataBundleCollection.dataBundles.Contains(db)).ToList();

        dataBundles.Clear();

        foreach (DataBundle dataBundle in dataBundleCollection.dataBundles)
        {
            DataBundle existingDataBundle = remainingDataBundles.Find(db => db.id == dataBundle.id);

            if (existingDataBundle)
            {
                existingDataBundle.CopyValuesFrom(dataBundle);
                Add(existingDataBundle);
            }
            else
            {
                Add(dataBundle);
            }
        }
    }
Esempio n. 2
0
    protected virtual void Output(DataBundle dataBundle, bool copyValues = true)
    {
        DataBundleCollection dataBundleCollection = new DataBundleCollection();

        dataBundleCollection.Add(dataBundle);

        Output(dataBundleCollection, copyValues);
    }
Esempio n. 3
0
    protected virtual void Output(DataBundleCollection dataBundleCollection, bool copyValues = true)
    {
        if (output.useConstant == true)
        {
            output.SetAndUseVariable(DataBundleCollectionVariable.New(dataBundleCollection));
        }

        if (copyValues)
        {
            output.Value.CopyValuesFrom(dataBundleCollection);
            output.HandleChange();
        }
        else
        {
            output.Value = dataBundleCollection;
        }

        OutputUpdated();
    }
 public void Inject(DataBundleCollection dataBundles)
 {
     dataBundleCollection.Value = dataBundles;
     UpdateChildren();
 }