【发布时间】:2013-03-15 14:55:57
【问题描述】:
我有两个datagrid's (Master/detailL)。我每 5 秒使用DispatcherTimer 刷新我的窗口。当我选择主网格上的任何行时,所选行上的焦点仅停留这 5 秒,之后选择焦点移动到最顶部的行。
如何在 XAML 中解决这个问题?
编辑
public partial class MyWindow : Window
{
ProdEntities _prodEntities = new ProdEntities();
public MyWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
RebindData();
SetTimer();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
private void SetTimer()
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 5);
dispatcherTimer.Start();
}
protected void dispatcherTimer_Tick(object sender, EventArgs e)
{
RebindData();
}
private void RebindData()
{
CollectionViewSource serversViewSource = (CollectionViewSource)(FindResource("serversViewSource"));
IQueryable<Server> serversQuery = this.GetServersQuery(_prodEntities );
serversViewSource.Source = serversQuery.ToList();
//serversViewSource.View.Refresh();
}
private IQueryable<Server> GetServersQuery(ProdEntities _prodEntities)
{
var serversQuery = _prodEntities.Servers.Where(c => c.Components.Any());
return serversQuery;
}
private void SaveChanges_Click(object sender, RoutedEventArgs e)
{
_prodEntities.SaveChanges();
}
}
XAML
<DataGrid AutoGenerateColumns="False" Foreground="DarkBlue" DataContext="StaticResource serversComponentsViewSource}"
ItemsSource="{Binding}" Name="componentsDataGrid">
【问题讨论】:
-
你能显示代码吗?您是否每次都在清除 ItemsSource 网格?
-
请检查我编辑的代码。我只是每 5 秒调用一次 dispatcherTimer
-
您是否在 View 中执行所有操作?你不使用 MVVM 吗?
-
不,我没有使用 MVVM atm
标签: wpf xaml wpfdatagrid