Mvvm 在c中更改项目源时,UWP DataGrid不会更新UI#
嗨,在我的UWP应用程序中,我使用了一个Mvvm 在c中更改项目源时,UWP DataGrid不会更新UI#,mvvm,data-binding,uwp,datagrid,uwp-xaml,Mvvm,Data Binding,Uwp,Datagrid,Uwp Xaml,嗨,在我的UWP应用程序中,我使用了一个DataGrid控件(microsoft community nuget),它会在加载时更新,但当添加新项目时,它不会更新UI。在启动应用程序时,从数据源触发并加载应用程序,但在添加新项目后,即使ObservableCollection发生更改,应用程序也不会刷新。通过ContentDialog添加数据,调用时ContentDialog是否阻止对帧的调用 <controls:DataGrid x:Name="DataGrid1" It
DataGrid
控件(microsoft community nuget),它会在加载时更新,但当添加新项目时,它不会更新UI。在启动应用程序时,从数据源触发并加载应用程序,但在添加新项目后,即使ObservableCollection
发生更改,应用程序也不会刷新。通过ContentDialog
添加数据,调用时ContentDialog
是否阻止对帧的调用
<controls:DataGrid x:Name="DataGrid1" ItemsSource="{x:Bind ViewModel.Collection,Mode=OneWay}" Foreground="White"
Grid.Row="1"
Margin="12"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
HorizontalScrollBarVisibility="Visible"
VerticalScrollBarVisibility="Visible"
AlternatingRowBackground="Transparent"
AlternatingRowForeground="Gray"
AreRowDetailsFrozen="False"
AutoGenerateColumns="False"
CanUserSortColumns="False"
CanUserResizeColumns="False"
CanUserReorderColumns="True"
ColumnHeaderHeight="32"
MaxColumnWidth="400"
IsReadOnly="False"
RowDetailsVisibilityMode="VisibleWhenSelected"
SelectionMode="Extended">
<controls:DataGrid.Columns>
<controls:DataGridTextColumn
x:Name="id"
Header="ID"
Width="SizeToHeader"
Binding="{Binding ID,Mode=OneWay}"
FontSize="20"
Visibility="Visible">
<controls:DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextWrapping" Value="Wrap"/>
</Style>
</controls:DataGridTextColumn.ElementStyle>
</controls:DataGridTextColumn>
<controls:DataGridTextColumn
Header="ID"
Width="SizeToHeader"
Binding="{Binding Number,Mode=OneWay}"
Tag="ID"
FontSize="20" />
<controls:DataGridTextColumn
Header="ID"
Width="SizeToHeader"
Binding="{Binding Name,Mode=OneWay}"
FontSize="20" />
<controls:DataGridTextColumn
Header="ID"
Width="SizeToHeader"
Binding="{Binding StartDate,Mode=OneWay}"
FontSize="20" />
<controls:DataGridTextColumn
Header="ID"
Width="SizeToHeader"
Binding="{Binding EndDate,Mode=OneWay}"
FontSize="20" />
</controls:DataGrid.Columns>
</controls:DataGrid>
</Grid>
main
public sealed partial class Permits : Page
{
PermitsViewModel ViewModel { get; } = new PermitsViewModel();
public Permits()
{
this.InitializeComponent();
ViewModel.Init(DataEntryPort);
base.DataContext = ViewModel;
}
}
您的意思是当您通过ContentDialog在ViewModel.Collection中添加新项时,UI没有显示新数据吗?我使用了你的代码,并试图添加新的项目,它起了作用,所以你能提供更多关于你如何添加它的信息,或者提供一个可以复制的简单示例吗?此外,什么是“调用时ContentDialog块调用帧?”意思是?gridview帧加载在另一帧中是问题还是conntentDialog在弹出时冻结了后面的帧?我通过大型机中的一个按钮添加,该按钮使用子帧加载大型机中的datagrid,并通过我的测试弹出一个contentdialog来添加数据,contentDialog没有阻止帧,添加新数据后,dataGrid可以更新。你能提供一个简单的样品,可以复制给我们吗?
class PermitData
{
public int ID { get; set; }
public int Number { get; set; }
public string Name { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
public sealed partial class Permits : Page
{
PermitsViewModel ViewModel { get; } = new PermitsViewModel();
public Permits()
{
this.InitializeComponent();
ViewModel.Init(DataEntryPort);
base.DataContext = ViewModel;
}
}