Привязка списка наблюдаемых коллекций к динамически создаваемому ComboBox в Silverlight - PullRequest
0 голосов
/ 17 октября 2018

У меня есть требование, где мне нужно связать список наблюдаемых коллекций с источником элементов динамически создаваемых ComboBox.

Проблема в том, что мы связываем xaml условно в свойстве ItemsSource, но теперь управляющие строки вСетка добавляется динамически, поэтому каждый ComboBox в строке ссылается на одну и ту же коллекцию, тогда как мне нужно связывать ее с отдельной коллекцией в наблюдаемом списке коллекций каждый раз, когда добавляется строка в сетке.

Это то, что я пробовал до сих пор, было бы оценено любое руководство.Благодарю.

public virtual List<ObservableCollection<ComboBoxEntity>> ListRewardRule { get; set; }

Xaml:

<itimControls:ComboBox Name="cboReward"
                       IsMandatory="True"                           
                       itimComponents:ComponentManager.ComponentId="TXT_GROUP_RULE"
                       MaxWidth="400"
                       MinWidth="150"
                       ItemsSource="{Binding ListRewardRule, ElementName=RDefinitionScreen}"
                       DisplayMemberPath="Name"
                       SelectedValuePath="Code"
                       Loaded="cboReward_Loaded"
                       SelectedValue="{Binding RewardRuleId, Mode=TwoWay}"
                       SelectionChanged="cboReward_SelectionChanged">
</itimControls:ComboBox>

.CS:

private void cboReward_Loaded(object sender, RoutedEventArgs e)
{
    Itim.Framework.Silverlight.UI.Controls.ComboBox cboReward = ((Itim.Framework.Silverlight.UI.Controls.ComboBox)sender);
    int row = (int)cboReward.GetValue(Grid.RowProperty);
    if (Model.ListRewardRule.Count > 0)
    {
        var rewardGroups = Model.RewardGroupAndTier.RewardGroups;
        if(rewardGroups.Count > 1)
        {
            cboReward.ItemsSource = Model.ListRewardRule[row];               
        }
    }
}

1 Ответ

0 голосов
/ 17 октября 2018

Насколько я понимаю, у вас есть «сетка» (я полагаю, вы имеете в виду DataGrid), и каждая строка в сетке имеет, среди прочего, набор комбинированных окон.

Что ясделать это привязать эту сетку к ObservableCollection пользовательского класса, назовите его CustomRowClass.CustomRowClass должен иметь ObservableCollection, которая будет связана с полями со списком.

Волшебство заключается в определении DataTemplate для CustomRowClass.После настройки XAML таким образом все, что вам нужно сделать, это создать экземпляр CustomRowClass, а затем добавить его в ItemsSource сетки.

...