1
我想將列添加到Silverlight DataGrid,但有問題。在我看來(我使用棱鏡),我可以在構造函數中添加列沒有問題,這工作正常 -使用Silverlight DataGrid的動態列
public MyView()
{
InitializeComponent();
myDatagrid.Columns.Add(new DataGridCheckBoxColumn() { Header = "HELLO!" });
}
但是,如果我嘗試添加一列時,DataContext設置添加列(調試時可以看到Columns.Count增加),但是新列未呈現。
public IMyViewModel ViewModel
{
get { return DataContext as IMyViewModel ; }
set
{
DataContext = value;
myDatagrid.Columns.Add(new DataGridCheckBoxColumn() { Header = "HELLO!" });
}
}
現在,我知道這不尊重MVVM範例。這不是我打算編寫代碼的方式,但是我需要在視圖中使用類似這樣的糟糕代碼來設置綁定到DataGrid的ItemSource更改時的列。你會發現列會根據用戶的輸入而增長和縮小,我需要添加/刪除列並相應地設置綁定。
我也曾嘗試以下以爲這是因爲它沒有在UI線程上執行 -
myDatagrid.Dispatcher.BeginInvoke(() =>
{
myDatagrid.Columns.Add(new DataGridCheckBoxColumn() { Header = "HELLO!" });
});
恐怕沒有奏效。 我試着用一個單擊事件處理程序向用戶控件添加一個按鈕,該處理程序執行相同的代碼行,並且添加了不麻煩的列。 – jameskind 2010-01-27 20:07:44