在我的模型中,我有以下代码通过对话框更改类别。
internal DiagramCategory ChangeCategoryWithDialog()
{
DiagramCategory diagramCategory = DiagramCategory.Other;
AddCategoryView diagramView = new AddCategoryView();
bool? showDialog = diagramView.ShowDialog();
if (showDialog.HasValue && showDialog.Value)
{
if (diagramView.DataContext is AddCategoryViewModel)
{
AddCategoryViewModel addCategoryViewModel = (AddCategoryViewModel)diagramView.DataContext;
diagramCategory = addCategoryViewModel.SelectedCategory;
}
}
return diagramCategory;
}
这段代码工作正常。在视图模型中,调用此方法的位置如下所示:
private void SelectCategory(object parameter)
{
if (parameter is DiagramCategory && this.SelectedDiagramEntry != null)
{
DiagramCategory diagramCategory = this.financialModel.ChangeCategoryWithDialog();
this.SelectedDiagramEntry.Category = diagramCategory;
OnPropertyChanged("SelectedDiagramEntry");
}
}
在视图中,我在单元格中有一个带有按钮的 DataGridTemplateColumn。此按钮的内容是图像。xml是
<DataGridTemplateColumn Header="Category" SortMemberPath="Category">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="categoryButton" Style="{StaticResource Flat}" Tag="{Binding Category}"
Command="{Binding Path=DataContext.SelectCategoryCommand,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"
CommandParameter="{Binding ElementName=categoryButton, Path=Tag}">
<Image Source="{Binding Category, Converter={StaticResource categoryConverter}}"/>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
DataGrid 的定义是
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding DiagramEntries}"
SelectedItem="{Binding SelectedDiagramEntry, UpdateSourceTrigger=PropertyChanged}"
CanUserResizeRows="False" SelectionMode="Single" SelectionUnit="FullRow"
IsTextSearchEnabled="True" AlternationCount="2">
DiagramEntries 是一个带有 DiagramEntries 的 ObservableCollection。DiagramEntry-Class 只包含四个属性。Category-Property 是一个自定义枚举。
我的问题是,调用 SelectCategory-Method 后,datagridrow 中按钮内的图像没有更新。我究竟做错了什么?我已经尝试添加对OnPropertyChanged("Category")
. 不幸的是,这也不起作用