我一直在努力解决这个问题并将Google用了很长时间,并且无法找到解决方案。我创建了一个SQL表/数据库,用户将数据输入到我创建的输入字段中,然后按下一个保存按钮将其保存到数据库中。然后我在另一个选项卡上将数据网格绑定到我的表,但是在单击另一个选项卡上的保存按钮时,网格在返回到该选项卡时不显示任何结果,我在这里做错了还是我必须编写代码刷新?下面是我的datagrid代码:
<DataGrid x:Name="employeeDetailsTableDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Margin="295,160,26,85" RowDetailsVisibilityMode="VisibleWhenSelected" SelectionChanged="employeeDetailsTableDataGrid_SelectionChanged" FontFamily="Arial">
<DataGrid.Columns>
<DataGridTextColumn x:Name="employeeIDColumn" Binding="{Binding EmployeeID}" Header="Employee ID" IsReadOnly="True" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="forenameColumn" Binding="{Binding Forename}" Header="Forename" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="surnameColumn" Binding="{Binding Surname}" Header="Surname" Width="SizeToHeader"/>
<DataGridTemplateColumn x:Name="dOBColumn" Header="DOB" Width="SizeToHeader">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding DOB, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn x:Name="emailAddressColumn" Binding="{Binding EmailAddress}" Header="Email Address" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="countryColumn" Binding="{Binding Country}" Header="Country" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="addressColumn" Binding="{Binding Address}" Header="Address" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="cityColumn" Binding="{Binding City}" Header="City" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="postcodeColumn" Binding="{Binding Postcode}" Header="Postcode" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="skill1Column" Binding="{Binding Skill1}" Header="Skill 1" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="skill2Column" Binding="{Binding Skill2}" Header="Skill 2" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="skill3Column" Binding="{Binding Skill3}" Header="Skill 3" Width="SizeToHeader"/>
<DataGridCheckBoxColumn x:Name="job1Column" Binding="{Binding Job1}" Header="Job 1" Width="SizeToHeader"/>
<DataGridCheckBoxColumn x:Name="job2Column" Binding="{Binding Job2}" Header="Job 2" Width="SizeToHeader"/>
<DataGridCheckBoxColumn x:Name="job3Column" Binding="{Binding Job3}" Header="Job 3" Width="SizeToHeader"/>
<DataGridCheckBoxColumn x:Name="employeeAvailabilityColumn" Binding="{Binding EmployeeAvailability}" Header="Employee Availability" Width="SizeToHeader"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
非常感谢任何帮助,谢谢你。
答案 0 :(得分:0)
您需要确保ItemsSource="{Binding}"
已更新为属性名称,或者对于此处绑定的属性,您应该使用该属性名称引发PropertyChangedEventHandler,以便xaml获得已发生更改的通知,从而数据网格应该刷新。
现在看起来你的ItemsSource
被绑定到它继承的对象。可以是视图模型。
关于如何在Binding中设置属性名称:ItemsSource="{Binding PropertyName}"
另一种可能的解决方案是刷新网格grid.Items.Refresh();