我网格中的数据没有更新

My data in my grid does not update

我的视图模型中有一个可观察集合(使用 WPF c#)。

我'attach'这个到我的数据网格

我有一个按钮

我按下按钮,它将搜索特定行并更新视图的值。

网格中的数据未更新。

我想通过使用一个可观察的它会更新吗?

查看模型:

private Visibility _JobHistorySelected;

public ObservableCollection<InformedWorkerModel.JobProfile> JobHistory
{
    get { return _JobHistory; }
    set
    {
        _JobHistory = value; RaisePropertyChanged("JobHistory");
    }
}

相关xaml:

<DataGrid      Name="dgJobHistory"     
        ItemsSource="{Binding  ActiveRecord.JobHistory}" 
        AutoGenerateColumns="False" 
        SelectionMode="Single"
        AlternatingRowBackground="LightBlue"
        CanUserSortColumns="True"                           
        GridLinesVisibility="Vertical" 
        CanUserAddRows="False" 
      Visibility="{Binding ActiveRecord.JobHistoryIsSelected}" 
      Grid.Row="1"
         IsReadOnly="True"
      ScrollViewer.VerticalScrollBarVisibility="Auto"
      ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
      MouseDoubleClick="dgJobHistory_MouseDoubleClick"                     
      >
    <DataGrid.Columns>
        <mui:DataGridTextColumn Header="Job Id" Binding="{Binding JobId, StringFormat='0000000000'}" Width="90" IsReadOnly="True">
            <DataGridTextColumn.HeaderStyle>
                <Style TargetType="{x:Type DataGridColumnHeader}">
                    <Setter Property="Margin" Value="3"></Setter>
                    <Setter Property="FontSize" Value="11"></Setter>
                    <Setter Property="Background" Value="Transparent"></Setter>
                    <Setter Property="HorizontalAlignment" Value="Stretch"/>
                    <Setter Property="HorizontalContentAlignment" Value="Left"/>
                </Style>
            </DataGridTextColumn.HeaderStyle>
        </mui:DataGridTextColumn>
        <mui:DataGridTextColumn Header="Date Booked" Binding="{Binding DateBookedFormated}" Width="120" IsReadOnly="True">
            <DataGridTextColumn.HeaderStyle>
                <Style TargetType="{x:Type DataGridColumnHeader}">
                    <Setter Property="Margin" Value="3"></Setter>
                    <Setter Property="FontSize" Value="11"></Setter>
                    <Setter Property="Background" Value="Transparent"></Setter>
                    <Setter Property="HorizontalAlignment" Value="Stretch"/>
                    <Setter Property="HorizontalContentAlignment" Value="Left"/>
                </Style>
            </DataGridTextColumn.HeaderStyle>
        </mui:DataGridTextColumn>
        <mui:DataGridTextColumn Header="Job Status" Binding="{Binding JobStatus}" Width="100" IsReadOnly="True">
            <DataGridTextColumn.HeaderStyle>
                <Style TargetType="{x:Type DataGridColumnHeader}">
                    <Setter Property="Margin" Value="3"></Setter>
                    <Setter Property="FontSize" Value="11"></Setter>
                    <Setter Property="Background" Value="Transparent"></Setter>
                    <Setter Property="HorizontalAlignment" Value="Stretch"/>
                    <Setter Property="HorizontalContentAlignment" Value="Left"/>
                </Style>
            </DataGridTextColumn.HeaderStyle>
        </mui:DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

隐藏代码:

public void SaveNewStatus(object sender, RoutedEventArgs e)
{
    var vm = this.DataContext as ApplicationViewModel;
    InformedWorkerBusinessService.JobStatus.SaveStatus(vm.ActiveRecord.JobRecord.JobStatus, vm.ActiveRecord.JobRecord.JobRef);
    foreach (var history in vm.ActiveRecord.JobHistory)
    {
        if (history.JobRef== vm.ActiveRecord.JobRecord.JobRef)
        {
            history.JobStatus = vm.ActiveRecord.JobRecord.JobStatus;
            break;
        }
    }
}

注意

当我在代码隐藏中检查是否找到该行并更新字段时,它是..

谢谢

一个 ObservableCollection 只是意味着当记录从集合中 addedremoved 时,集合有通知的实现。如果记录的 属性 发生变化, 那个 记录的 属性 必须包含通知 UI 它的变化的方法。例如,您可以为集合中的项目实施 INotifyPropertyChanged