我對WPF(Visual Studio Express 2012)頗爲陌生,並且很多時候,它很酷,但它不像我所期望的那麼容易。感謝stackoverflow和示例和教程,我正在採摘它,但在此我受阻。初始化後無法將行添加到DataGrid
我有一個datagrid,我把它綁定到一個列表,我期望當我添加一些東西到列表中時,它顯示在datagrid中。這發生在MainWindow函數中,但不會在我的代碼中發生,以處理按鈕單擊(當我有一個ListBox時它曾經工作得很好,但ListBox不支持複選框,至少不是本地的,所以我想要將其轉換)。
我想知道this tutorial的旁註是否重要 - 它表示ItemSource引用原始列表,但Items屬性是轉換後的ItemCollection。單擊代碼,我可以看到MyList在單擊按鈕時獲取新項目,但它不會顯示在UI中。
請幫忙!
DataGridClass.cs:
namespace WpfTest
{
class DataGridClass
{
public bool CheckboxColumn { get; set; }
public string Text1Column { get; set; }
public string Text2Column { get; set; }
}
}
MainWindow.xaml.cs:
namespace WpfTest
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
List<DataGridClass> myList = new List<DataGridClass>();
public MainWindow()
{
InitializeComponent();
MyDataGrid.ItemsSource = myList;
// this works
myList.Add(new DataGridClass()
{
CheckboxColumn = false,
Text1Column = "Initialization",
Text2Column = "ABCD"
});
}
private void MyButton_Click(object sender, RoutedEventArgs e)
{
// this doesn't work
myList.Add(new DataGridClass()
{
CheckboxColumn = false,
Text1Column = "Button Clicked",
Text2Column = "1234"
});
}
}
}
MainWindow.xaml:
<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button x:Name="MyButton" Content="Populate Chart" HorizontalAlignment="Left" Margin="75,36,0,0" VerticalAlignment="Top" Width="120" Click="MyButton_Click"/>
<DataGrid x:Name="MyDataGrid" HorizontalAlignment="Left" Margin="75,76,0,0" VerticalAlignment="Top" Height="151" Width="349"/>
</Grid>
</Window>
是的!這就是訣竅。我曾在幾個地方看過,但我看過的教程使用了List,並沒有提到任何有關這方面的內容。 Thx非常快速回復:) –