为什么我的数据网格不显示我的输入数据?

时间:2017-02-23 16:52:18

标签: c# wpf datagrid

我一直在努力解决这个问题并将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>

非常感谢任何帮助,谢谢你。

1 个答案:

答案 0 :(得分:0)

您需要确保ItemsSource="{Binding}"已更新为属性名称,或者对于此处绑定的属性,您应该使用该属性名称引发PropertyChangedEventHandler,以便xaml获得已发生更改的通知,从而数据网格应该刷新。

现在看起来你的ItemsSource被绑定到它继承的对象。可以是视图模型。 关于如何在Binding中设置属性名称:ItemsSource="{Binding PropertyName}"

另一种可能的解决方案是刷新网格grid.Items.Refresh();