我在WPF项目中有这个XAML .

<ListView Grid.Column="0" Grid.Row="3" Grid.RowSpan="4" Grid.ColumnSpan="2" ItemsSource="{Binding FilteredApps}" SelectedItem="{Binding SelectedApp, Mode=TwoWay}">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Status">
                    <GridViewColumn.CellTemplate >
                        <DataTemplate DataType="{x:Type Image}">
                            <Image>
                                <Image.Style>
                                    <Style TargetType="Image">
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding State, Mode=TwoWay}" Value="{x:Static common:Globals+ModelState.Unedited}">
                                                <Setter Property="Source" Value="../Resources/IndraDoc/AppUnedited.png"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding State, Mode=TwoWay}" Value="{x:Static common:Globals+ModelState.Edited}">
                                                <Setter Property="Source" Value="../Resources/IndraDoc/AppEdited.png"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding State}" Value="{x:Static common:Globals+ModelState.New}">
                                                <Setter Property="Source" Value="../Resources/IndraDoc/AppNew.png"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding State}" Value="{x:Static common:Globals+ModelState.Deleted}">
                                                <Setter Property="Source" Value="../Resources/IndraDoc/AppDeleted.png"/>
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Image.Style>
                            </Image>

                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Namn"  Width="Auto"/>
            </GridView>
        </ListView.View>
    </ListView>

当属性“名称”更改时,相应的更改将显示在网格中,但是当属性“状态”更改时,图像不会切换 . 对此有何看法?

EDIT 奇怪的是,我编辑了XAML,并将ListView中的图像添加到了SelectedApp,但这样可以正常工作,但这不是预期的功能 . 它现在可以工作,但我仍然很好奇为什么我的原始代码不会触发 .

在我执行statechange的地方添加代码:

private void ChangeStateOnSelected(Globals.ModelState newState)
    {
        if (SelectedApp.State != newState) //dont do any changework if new state is same as current sate
        {
            if (SelectedApp.State == Globals.ModelState.New && newState == Globals.ModelState.Edited) //this is not allowed
                return;
            SelectedApp.State = newState;
            if (newState == Globals.ModelState.Unedited)
            {
                var selectedId = SelectedApp.Id;

                _allApps.Replace(_allApps.FirstOrDefault(x => x.Id == SelectedApp.Id), SelectedApp);
                _selectedApp = (Data.DataModel.App)_locationService.GetApp(selectedId);
                _filteredApps.Replace(_filteredApps.FirstOrDefault(x => x.Id == SelectedApp.Id), SelectedApp);
            }
            NotifyOfPropertyChange(() => SelectedApp);
            NotifyOfPropertyChange(() => AllApps);
            NotifyOfPropertyChange(() => FilteredApps);
        }
    }