private StackPanel CreateLevelStackPanel(int viewIndex, int levelIndex) { var btnDelete = new Button() { Content = "x" }; btnDelete.SetBinding(Button.IsEnabledProperty, new Binding(string.Format("MasterDetailList[{0}].CanDeleteLevel", viewIndex))); btnDelete.Click += DeleteLevelButton_Click; var btnAdd = new Button() { Content = "+" }; btnAdd.Click += AddLevelBtn_Click; var combobox = new ComboBoxEx() { IsEditable = false }; combobox.DisplayMemberPath = nameof(DbTable.TableName); combobox.SelectedValuePath = nameof(DbTable.TableName); combobox.SetBinding(ComboBoxEx.ItemsSourceExProperty, new Binding("Tables")); combobox.SetBinding(ComboBox.SelectedValueProperty, new Binding(string.Format("MasterDetailList[{0}].Levels[{1}]", viewIndex, levelIndex))); var stackPanel = new StackPanel() { Orientation = Orientation.Horizontal }; stackPanel.Children.Add(btnDelete); stackPanel.Children.Add(combobox); stackPanel.Children.Add(btnAdd); return(stackPanel); }