我正在尝试将DataSet
中的表绑定到自己的DataGrid
,但是不确定如何去做,这是我尝试过的:
<ListView ItemsSource="{Binding CalibrationData.CalibrationValuestoWrite}">
<DataGrid ItemsSource="{Binding}">
</DataGrid>
</ListView>
也许我需要创建一个DataTemplate
?任何帮助将不胜感激!
答案 0 :(得分:3)
尝试这一希望对您有帮助
<DataGrid AutoGenerateColumns="False" Height="250" ItemsSource="{Binding}" HorizontalAlignment="Left" Margin="12,40,0,0" Name="mytbl" VerticalAlignment="Top" Width="479">
<DataGrid.Columns>
<DataGridTextColumn Header="Col1" Width="50" />
<DataGridTextColumn Header="Col2" Width="375"/>
<DataGridTextColumn Header="Col3" Width="50"/>
</DataGrid.Columns>
</DataGrid>
背后的代码
this.mytbl.DataContext = ds.Tables[0].DefaultView;
答案 1 :(得分:2)
您只能将ItemsSource
属性绑定到IEnumerable
。然后定义一个ItemTemplate
来定义可枚举返回的每个项目的外观。
因此,如果CalibrationData.CalibrationValuestoWrite
返回一个IEnumerable<DataTable>
(DataSet.Tables
属性会返回),并且您想为每个DataGrid
显示一个DataTable
,则应该可以:
<ListView ItemsSource="{Binding CalibrationData.CalibrationValuestoWrite.Tables}">
<ListView.ItemTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
答案 2 :(得分:0)
更好地与DataView绑定,例如此处的小示例:
(vm是XAML视图的数据上下文)。
XAML:
<DataGrid ItemsSource="{Binding MyGrid}">
</DataGrid>
C#,ViewModel
public partial class vm : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string text)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(text));
}
}
public vm()
{
DataTable dt;
...
MyGrid = new DataView(dt);
}
private DataView _mygrid;
public DataView MyGrid
{
get
{
return _mygrid;
}
set
{
_mygrid= value;
OnPropertyChanged("MyGrid");
}
}
}