【问题标题】:WPF DataGrid how to refresh Itemsource from Entity-FrameworkWPF DataGrid如何从实体框架刷新Itemsource
【发布时间】:2014-09-21 02:01:13
【问题描述】:

我想知道是否有从实体框架(即数据库)刷新 DataGrid ItemSource 的正确或明智的方法

我需要从数据库中的表中获取最新数据,因为数据是通过 Web 服务而不是 WPF 应用程序本身填充的。

我使用过 DataGrid.Items.Refresh() 但没有占上风。

我可以再次分配 Itemsource 的属性,但是我需要在数据网格上发生一个事件来导致更新(除非这是错误的)

大家有什么建议吗?

谢谢

【问题讨论】:

  • 如果你在Grid's TtemSource上正确配置了绑定,就不用手动刷新了
  • 我希望用户是否要刷新网格(ItemSource)
  • 显示代码先生..,xaml 和代码,我无法从这里想象您的代码..

标签: c# wpf entity-framework datagrid


【解决方案1】:

您只需要正确绑定DataGrid即可。

<Window DataContext="{Binding RelativeSource={RelativeSource Self}}">
    <StackPanel>
        <Button Content="Refresh" Click="Refresh_Click" />
        <DataGrid ItemsSource="{Binding Items}"></DataGrid>
    </StackPanel>
</Window>

然后清除数据绑定,重新添加item,UI会自动更新。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    private readonly ObservableCollection<Item> _items = new ObservableCollection<Item>();
    public ObservableCollection<Item> Items
    {
        get { return _items; }
    }
    private void Refresh_Click(object sender, RoutedEventArgs e)
    {
        using (var context = new AppContext())
        {
            var items = context.Items.ToArray();

            // Clears the item source then re-add all items.
            Items.Clear();
            Array.ForEach(items, Items.Add);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    相关资源
    最近更新 更多