private void RefreshUI()
{
// Update variable name label.
if (_variable == null)
{
xVariableName.Text = "";
}
else
{
xVariableName.Text = _variable.Name;
}
// Gather distributions.
List<FObservation> parentConfigurations = new List<FObservation>();
List<DiscreteDistribution> distributions = new List<DiscreteDistribution>();
// TODO: Better ordering so that parent values change most on right, least on left.
// TODO: Deal with limits better.
const int maxTables = 100;
foreach (var d in _distributions.EnumerateDistributions().Take(maxTables))
{
var parentConfig = d.Item1;
var distribution = d.Item2;
parentConfigurations.Add(parentConfig);
distributions.Add(distribution);
}
// Create distribution displays.
// TODO: Reuse existing if possible.
xStack.Children.Clear();
parentConfigurations
.Zip(distributions, (p, d) => new { p, d })
.Select(record =>
{
var dt = new DistributionTable();
dt.SetData(_variable, _variableAbbreviations, record.d, record.p, _variableParents);
return dt;
}
)
.ForAll(dt =>
{
xStack.Children.Add(dt);
dt.Margin = new Thickness(0, 0, 0, 24);
});
}