Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mvvm 在c中更改项目源时,UWP DataGrid不会更新UI#_Mvvm_Data Binding_Uwp_Datagrid_Uwp Xaml - Fatal编程技术网

Mvvm 在c中更改项目源时,UWP DataGrid不会更新UI#

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

嗨,在我的UWP应用程序中,我使用了一个
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;
    }
}