我有一個數據網格顯示訂單列表。在數據網格上方,有一個框可以通過捕獲文本輸入來過濾訂單,然後調用服務器端方法來獲取與提供的文本匹配的訂單。這在頁面上正常工作。Silverlight datagrid不重新綁定到新數據
我試過添加一個頁面,通過查詢字符串參數傳遞,當用戶登陸頁面時會自動應用過濾器。調用服務器端方法的代碼被正確調用並且數據正確返回,但datagrid不顯示結果。如果我在頁面上的文本框中輸入相同的文本並搜索,結果最終會顯示在數據網格中。這幾乎就像用戶在第一次使用自動過濾器進入頁面時datagrid沒有看到改變。下面是一些relavent位:
protected override void OnNavigatedTo(NavigationEventArgs e) {
if (NavigationContext.QueryString.ContainsKey("filterkeyword") && NavigationContext.QueryString.ContainsKey("filtervalue")) {
string filterkeyword = NavigationContext.QueryString["filterkeyword"];
string filtervalue = NavigationContext.QueryString["filtervalue"];
switch (filterkeyword) {
default: ApplyDefaultFilter(filtervalue); break;
}
} else {
ApplyDefaultFilter("");
}
}
數據網格僅僅是綁定到數據源對象和數據源沒有被設置爲自動加載。下面是當用戶不經過濾箱提交一個搜索位:
private void txtFilter_KeyDown(object sender, KeyEventArgs e) {
if (e.Key == Key.Enter) {
ApplyDefaultFilter(txtFilter.Text);
txtFilter.Select(0, txtFilter.Text.Length);
}
}
他們都調用相同的方法和返回結果,它只是文本框以某種方式告訴頁面刷新DataGrid和神奇的是數據出現。是否有一個事件可以在頁面上強制刷新數據網格?