【发布时间】:2011-02-10 06:29:42
【问题描述】:
我已经尝试了所有方法,但一无所获,所以我希望有人能给我带来欢呼的时刻。 我根本无法通过绑定成功拉取数据网格中的数据。
我有一个包含多个 MyDataType 列的 DataTable
public class MyData
{
string nameData {get;set;}
bool showData {get;set;}
}
MyDataType 有 2 个属性(一个字符串,一个布尔值) 我创建了一个测试数据表
DataTable GetDummyData()
{
DataTable dt = new DataTable("Foo");
dt.Columns.Add(new DataColumn("AnotherColumn", typeof(MyData)));
dt.Rows.Add(new MyData("Row1C1", true));
dt.Rows.Add(new MyData("Row2C1", false));
dt.AcceptChanges();
return dt;
}
我有一个 WPF DataGrid,我想显示我的 DataTable。 但我想要做的就是更改每个单元格的呈现方式,以显示每个单元格的 [TextBlock][Button] 值绑定到 MyData 对象,这就是我遇到麻烦的地方。
我的 XAML 看起来像这样
<Window.Resources>
<ResourceDictionary>
<DataTemplate x:Key="MyDataTemplate" DataType="MyData">
<StackPanel Orientation="Horizontal" >
<Button Background="Green" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,0,0,0" Content="{Binding Path=nameData}"></Button>
<TextBlock Background="Green" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5,0,0,0" Text="{Binding Path=nameData}"></TextBlock>
</StackPanel>
</DataTemplate>
</ResourceDictionary>
</Window.Resources>
<Grid>
<dg:DataGrid Grid.Row="1" ItemsSource="{Binding}" AutoGenerateColumns="True"
x:Name="dataGrid1" SelectionMode="Single" CanUserAddRows="False"
CanUserSortColumns="true" CanUserDeleteRows="False" AlternatingRowBackground="AliceBlue"
AutoGeneratingColumn="dataGrid1_AutoGeneratingColumn" />
</Grid>
现在我加载后所做的就是尝试将 DataTable 绑定到 WPF DataGrid
dt = GetDummyData();
dataGrid1.ItemsSource = dt.DefaultView;
TextBlock 和 Button 出现了,但它们没有绑定,因此它们是空白的。
任何人都可以让我知道他们是否知道如何解决这个问题。
这应该很简单,这就是微软让我们相信的。
我在AutoGenerating 事件期间设置了Column.CellTemplate,但仍然没有绑定。
请帮忙!!!
【问题讨论】:
-
您是否尝试将 GetDummyData 中的数据表设置为 DataGrid.DataContext?
-
已经做过而且还是一样。 UIElements 上没有任何变化,因为它们似乎未绑定。我尝试使用 AutoGeneratingColumn 事件来设置我自己的 Column.CellTemplate ,但仍然没有。还有其他想法吗?谢谢谢谢
标签: wpf data-binding binding datagrid datatable