我正在尝试在WPF中的DataGrid中显示我的数据库,但我找不到让它工作的方法。我正在使用DataTable和DataView将数据传入DataGrid,但它总是以XamlParseException结束,即使DataView充满了数据库中的信息。我正在使用Visual Studio 2015。
任何人都知道问题可能在哪里?
这是我使用DataGrid的WPF的一部分(现在只有id参数):
`
xmlns:vm="clr-namespace:FilmovaDatabaze.ViewModels"
<Window.Resources>
<vm:MainVm x:Key="MainVm"/>
</Window.Resources>
<DataGrid ItemsSource="{Binding Source={StaticResource MainVm}, Path=DataView}">
<DataGridTextColumn Header="ID" Binding="{Binding id}"/>
</DataGrid>`
这是ViewModel中代码的一部分:
private DataView _dataView;
private DataTable _data;
public DataView DataView { get { return _dataView; } set { _dataView = value; this.ChangeProperty("DataView"); } }
public MainVM(){
_enabledChanges = true;
_data = new DataTable();
_data = Db.GetTable("SELECT * FROM movies JOIN directors ON directors.id = movies.director_id", "id ASC");
_dataView = new DataView(_data);}
答案 0 :(得分:1)
最后,我找到了解决方案。 XAML中缺少一层。它看起来像这样:
<DataGrid ItemsSource="{Binding Source={StaticResource MainVm}, Path=DataView}">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding id}"/>
</Datagrid.Columns>
</DataGrid>