SilverLight Datagrid刷新

时间:2011-01-18 11:22:44

标签: c# .net vb.net silverlight silverlight-4.0

我有一个Silverlight Datagrid谁是DataSource我每5秒刷新一次。 我希望当网格刷新时,焦点位于最后一行,而不是第一行。 我已经尝试将网格的SelectedIndex属性设置为最后一行,但它不起作用。

细节:

我将DataGrid绑定到它的ViewModel上的ObservalbleList(Of MyObject)属性,而SelectedIndex也是ViewModel上的属性。这两个属性都会引发属性更改事件(能够通过看到DataGrids DataSource明显更改而见证此工作,但是从未设置SelectedIndex。

在谷歌搜索问题时,我已经阅读过报告,在DataGrid上设置SelectedIndex是一个已知问题,但还没有找到解决方法。任何想法?

1 个答案:

答案 0 :(得分:0)

在视图模型中为CurrentItem / Entity创建一个属性,如下所示:

    private Customer customer;
    public Customer CurrentCustomer
    {
        get { return this.customer; }
        set
        {
            if (this.customer!= value)
            {
                this.customer= value;
                OnPropertyChanged("CurrentCustomer");
            }
        }
    }

在视图模型中将所有客户加载后,将CurrentCustomer设置为:

CurrentCustomer = context.Customers.Last();

在您的View / XAML中,将数据网格选定的绑定到CurrentCustomer,如:

SelectedItem="{Binding CurrentCustomer, Mode=TwoWay}"

每次刷新5秒后,只需像上面一样重置CurrentCustomer。