我网格中的数据没有更新
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
只是意味着当记录从集合中 added 或 removed 时,集合有通知的实现。如果记录的 属性 发生变化, 那个 记录的 属性 必须包含通知 UI 它的变化的方法。例如,您可以为集合中的项目实施 INotifyPropertyChanged
。
我的视图模型中有一个可观察集合(使用 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
只是意味着当记录从集合中 added 或 removed 时,集合有通知的实现。如果记录的 属性 发生变化, 那个 记录的 属性 必须包含通知 UI 它的变化的方法。例如,您可以为集合中的项目实施 INotifyPropertyChanged
。