我正在瀏覽代碼,我發現在我的視圖的構造函數中,我將DataContext設置爲我的視圖模型的新實例。進入它,我可以看到設置了字段Thingies。回到視圖的構造函數,我可以驗證視圖模型的屬性是否已設置,並且元素的數量是否正確。數據何時被綁定以及如何加速?
然後......(讓我們回到這個點在第二)
最後,我可以看到呈現的圖形用戶界面,其中由視圖模型產生的數據只是顯示爲應該。一切都按預期完成。現在,我只需要將網格的第一行設置爲選中狀態,這應該不是問題,因爲我知道數據在那裏(通過引入模型視圖的構造函數,觀察數據上下文的字段以及實際窗口的內容)。
但拿去...(現在,讓我們回到上述點)
當我研究了網格的DataItems財產,同時仍然在構造函數中,我發現有一個在它的零個元素。由於我在屏幕上看到了這些,我知道他們必須以某種方式到達,但是,顯然,視圖模型的屬性Thingies發生綁定構造函數的運行後。
我想強制執行綁定發生而仍然在構造函數(如果這是最合適的方法)。作爲計劃B,我正在考慮對某些事件做出反應(例如Blopp_OnDataBound(...)或其他),但除了target being updated之外,我沒有找到任何東西。我已將TargetUpdated =「TheGriddy_OnTargetUpdated」放在數據源綁定旁邊,但該方法不會調用。
注意:儘管我在特定控件上這樣做,但我確信這個問題通常適用於任何控件,因爲它涉及XAML/WPF的數據綁定範例。如我錯了請糾正我。 (我對Infragistics的XamDataGrid但行爲是好的,舊的,普通的DataGrid最有可能reproduceable)
按照要求,我還提供了一個小樣本,這是我選擇了不之前,因爲我認爲這沒有任何幫助。我立場糾正。
public MyView()
{
InitializeComponent();
DataContext = new MyViewModel();
if (xamDataGrid.DataSource != null)
throw new HappyException("yes!");
}
private void SomeMethod()
{
if (xamDataGrid.DataSource != null)
throw new HappyException("yes!");
}
的問題是異常從來沒有在構造函數拋出的,但在方法 。數據源是在我們綁定時設置的,所以綁定必須在構造函數運行後發生,對嗎?
我需要選擇第一行。這可以在第一行存在時完成...
我兩次讀到你的問題,但我仍然無法理解所有複雜情況。我知道這是很多工作,但[mcve](http://stackoverflow.com/help/mcve)在這裏確實有幫助。 – Heinzi
此外,我認爲有一些評論的代碼片段將有助於理解您的問題 - 我們編寫的代碼不是文獻:-) – derape
@Heinzi我已經添加了一些示例。也許這將有助於澄清我的問題。 –