Я искал решение за полтора дня. Большинство примеров, которые я получаю, объясняют/объясняют ситуацию, относятся к выкладке со статическими элементами типа. У меня есть следующая структура.Комбинация связывания с использованием DataTemplate of ItemsControl
DataModel Item
ObservableCollection CombinedData внутри DataFilter класса (т.е. имеет другие свойства, в том числе "ParentName используется для buttoncontent")
ObservableCollection Фильтры внутри DataFilterGroup класса
DataFilterGroup является 1 в DataViewModel
Таким образом, DataContext окна является DataViewModel.
У меня есть DataTemplate, в котором я хотел бы показать элементы DataFilterGroup из кода за
Здесь мне нужна помощь, пожалуйста !!
так в основном: ItemSource ItemsControl является связан с DataFilterGroup
Как я связать выпадающий в DataFilter так, что это точка детали источник DataFilter. Поэтому источник изменится (или содержимое поля со списком изменится с каждым элементом DataFilterGroup).
Прошу прощения, если это вопрос повторения. То, что у меня есть до сих пор, является следующим (и попробовал несколько способов привязки выпадающего списка, но никаких элементов не появилось. Удивительно достаточно, чтобы появился Buttoncontent. Специальная комбо - это управляющая команда Combobox, которая представляет собой кнопку и поле со списком.
private static DataTemplate DataFilterTemplate
{
get
{
DataTemplate DFT = new DataTemplate();
DFT.DataType = typeof(DataFilters);
FrameworkElementFactory Stack = new FrameworkElementFactory(typeof(VirtualizingStackPanel));
Stack.SetValue(VirtualizingStackPanel.DataContextProperty, new Binding());
Stack.SetValue(VirtualizingStackPanel.OrientationProperty, Orientation.Horizontal);
FrameworkElementFactory Item = new FrameworkElementFactory(typeof(SpecialCombo));
//Item.SetValue(SpecialCombo.DataContextProperty, new Binding());
Item.SetValue(SpecialCombo.ButtonContentProperty, new Binding("ParentName"));
Binding b = new Binding("CombinedData");
//b.RelativeSource.AncestorType = typeof(ItemsControl);
Item.SetBinding(SpecialCombo.ItemsSourceProperty, b);
//Item.SetValue(SpecialCombo.ItemsSourceProperty, new Binding("CombinedData"));
Item.SetValue(SpecialCombo.DisplayMemberPathProperty, "FullName");
Item.SetValue(SpecialCombo.SelectedValuePathProperty, "Index");
Item.SetValue(SpecialCombo.SelectedValueProperty, "SelectedItem");
Item.SetValue(SpecialCombo.ToggleVisibleProperty, new Binding("ComboVisibility"));
//Item.SetValue(SpecialCombo.SelectedValueProperty, new Binding("SelectedItem"));
Stack.AppendChild(Item);
DFT.VisualTree = Item;
return DFT;
}
}
Ребенок ItemsControl
Child.ItemsSource = DVM.Filters.FullCollection;
Child.ItemTemplate = DataFilterTemplate;