В моей DataGrid есть столбец шаблона, который выглядит следующим образом:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Item}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox
DisplayMemberPath="Item"
Header="Item"
ItemsSource="{Binding Data.AssetDescriptions, Source={StaticResource proxy}}"
SelectedValueBinding="{Binding AssetDescriptionID}"
SelectedValuePath="AssetDescriptionID" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
У ViewModel есть открытое свойство, содержащее описания активов:
public IEnumerable<AssetDescription> AssetDescriptions { get; set; }
Где AssetDescription
- этопо существу:
public class AssetDescription
{
public int AssetDescriptionID { get; set; }
public string Item { get; set; } // Description
}
Сам DataGrid связан со свойством ObservableCollection<Asset> Assets
, где Asset
содержит как AssetDescriptionID
, так и Item
(описание).Для этого я присоединяю таблицу Assets к таблице AssetDescription, например, так:
var assets = _conn.Query<Asset>(
@"SELECT A.AssetDescriptionID, D.Item
FROM Assets A
JOIN AssetDescriptions D
ON D.AssetDescriptionID = A.AssetDescriptionID");
Assets = new ObservableCollection<Asset>(assets);
Это все работает отлично, за исключением , что TextBlock
в CellTemplate
DataTemplate
не обновляется до нового описания, когда в ComboBox
выбрано новое значение.
Как мне это сделать?