Я опытный пользователь Winforms, и теперь я играю с WPF, но я немного борюсь. У меня есть datagrid с 2 столбцами. Первый столбец - это DataGridTextColumn, привязанный к свойству «Имя» моего объекта. Второй столбец привязан к свойству «Власть» моего объекта.Заполнение ComboBox DataGrid со значениями из другого столбца
Когда пользователь редактирует столбец Power, я бы хотел отобразить поле со списком, в котором указано все Имя первого столбца, в дополнение к «None» в качестве первого элемента. Как я могу это сделать?
Кроме того, если пользователь обновляет любое имя первого столбца, я хотел бы, чтобы изменения отражались в столбце Power. Является ли это возможным?
В коде позади:
public partial class MainWindow : Window
{
ObservableCollection<MyObject> objects = new ObservableCollection<MyObject>();
public MainWindow()
{
InitializeComponent();
dgObjects.ItemsSource = objects;
}
}
public class MyObject
{
public String Name { get; set; }
public String Power { get; set; }
}
В Xaml:
<DataGrid Name="dgObjects" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridComboBoxColumn Header="Power" Binding="????"/>
</DataGrid.Columns>
</DataGrid>
Благодаря
Вы могли бы установить и поддерживать свою коллекцию где-то еще, как правило, на том же уровне, что и то, что содержит коллекцию элементов, чтобы связать DataGrid с, а затем привязать 'ComboBox.ItemsSource' к этой коллекции, изменяя' Источник "привязки. В наиболее распространенном сценарии привязка «RelativeSource» используется для поиска родительского «DataGrid» и привязки к «DataGrid.DataContext.SomeCollection». Например, 'ItemsSource =" {Binding DataContext.PowerValues, RelativeSource = {RelativeSource AncestorType = {x: Тип DataGrid}}} "' – Rachel