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

您好,在我的UWP应用中,我使用一个DataGrid控件(microsoft社区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>

这是我的视图模型

class PermitsViewModel : INotifyPropertyChanged
{
    //public  List<PermitData> PermitsData { get; set; }
    public ObservableCollection<PermitData> Collection
    {
        get
        {
            return Collection;
        }
        set
        {
            Collection = value;
            if (PropertyChanged != null)
            {
                PropertyChanged(this,new PropertyChangedEventArgs("Collection"));
            }
        }
    }
    private static Frame _EntryFrame;


    public PermitsViewModel() {
        //PermitsData = new List<PermitData> {
        //new PermitData { ID = 9966615,Number = 78,Name = "Mark",StartDate = new DateTime(2016,8,30),EndDate = new DateTime(2017,5,30) },//new PermitData { ID = 9945512,Number = 79,Name = "Steve",StartDate = new DateTime(2019,7,EndDate = new DateTime(2015,9,30) }
        //};
        Collection = new ObservableCollection<PermitData>();
        Collection.Add(new PermitData { ID = 22,Number = 22,Name = "KASUN",EndDate = new DateTime(2016,30) });
        OnPropertyChanged();
    }

     public void AddToTable(int ID,int Number,string Name,DateTime StDate,DateTime EndDate)
    {

        //Collection = new ObservableCollection<PermitData>();
        Collection.Add(new PermitData { ID = ID,Number = Number,Name = Name,30) });
        Debug.WriteLine(Collection[0]);

        //OnPropertyChanged();
    }
}

数据属性层

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;
    }
}
a123qqq 回答:在C#中更改项目源时,UWP DataGrid不会更新UI

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3114611.html

大家都在问