Привет, поэтому у меня есть datagrid с двумя столбцами. Это выглядит, как показано ниже:DataGrid TemplateClumn ComboBox ItemsSource и SelectedValue
<DataGrid ItemsSource="{Binding MyCollection}">
<DataGrid.Columns>
<DataGridTextColumn Width="85*" Header="Team Name" Binding="{Binding TeamName}"/>
<DataGridTemplateColumn Header="Prefix">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}},Path=DataContext.AllowedPrefixes}"
SelectedValue="{Binding Prefix}">
//SelectedValue="{Binding Prefix}" - this is not working i also tried SelectedItem
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
Как вы можете видеть, у меня есть DataGridTemplateColumn с ComboBox. Я привязал ComboBox ItemsSource к коллекции, которая содержит некоторые фиксированные значения. Теперь я хочу привязать SelectedValue ComboBox к свойству префикса MyClass (это DataContext моего DataGrid). Но поскольку я установил ItemsSource этого ComboBox в другую коллекцию, это связывание не работает, я думаю, что datacontext изменился. Ниже приведен класс, который является DataContext для DataGrid:
public class MyClass
{
public string TeamName{get;set;}
public string Prefix{get;set;}
}
// DataGrid.DataContext is ObservableCollection<MyClass>
Так коллекция AllowedPrefixes правильно показано в ComboBox, но префикс Свойс не обновляется. Как я должен правильно привязать это выделение?
EDIT.
Пожалуйста, обратите внимание, что ComboBox ItemsSource отличается collecetion, чем тот, я хочу, чтобы обновить с SelectedValue
EDIT.
Я думаю, что это не работает, потому что я установил ComboBox ItemsSource в другую коллекцию. Я пытался, как показано ниже, но безуспешно:
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}},Path=DataContext.AllowedPrefixes}"
SelectedValue="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridTextColumn}}, Path=DataContext.Prefix, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
добавьте ошибку или описание, как он не работает – Breeze
Вы, вероятно, хотите использовать 'SelectedItem', не 'SelectedValue' - http://stackoverflow.com/questions/4902039/difference-between-selecteditem-selectedvalue-and-selectedvaluepath – Michael
Нет ошибки, это просто не обновление свойства префикса viemodels. Выбранный элемент ничего не изменит. – MajkeloDev