您好,在我的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;
}
}