WPF绑定数据未加载到绑定控件

时间:2017-06-30 13:51:40

标签: c# wpf data-binding datagrid

修改

我偏离了此处所示的方法(我无法开始工作)。

绑定数据在I implemented MVVM as per this question

时有用

原始问题

我遵循了一个教程(我已经失去了链接),为我的DataGrid创建数据绑定。

该过程涉及从我的模型创建数据源,这允许我将DataGrid拖到我的窗口上。

当我运行它时,DataGrid在窗口上呈现为空,我知道有一些事实需要进入它。

以下是代码:

<Page.Resources>
    <CollectionViewSource x:Key="campaignViewSource" d:DesignSource="{d:DesignInstance {x:Type Models:Campaign}, CreateList=True}"/>
</Page.Resources>

<DataGrid x:Name="campaignDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding}" Grid.Row="1" RowDetailsVisibilityMode="VisibleWhenSelected">
    <DataGrid.Columns>
        <DataGridTextColumn x:Name="clientColumn" Binding="{Binding Client}" Header="Client" Width="SizeToHeader"/>
        <DataGridTemplateColumn x:Name="dateSentColumn" Header="Date Sent" Width="SizeToHeader">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <DatePicker SelectedDate="{Binding DateSent, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn x:Name="idColumn" Binding="{Binding Id}" Header="#" Width="SizeToHeader"/>
        <DataGridTextColumn x:Name="nameColumn" Binding="{Binding Name}" Header="Name" Width="SizeToHeader"/>
        <DataGridTextColumn x:Name="emailAddressColumn" Binding="{Binding EmailAddress}" Header="Email Address" Width="SizeToHeader"/>
    </DataGrid.Columns>
</DataGrid>

根据我从中构建的教程,我不需要做任何事情来完成这项工作。那么我错过了什么?

我该怎么办?

1 个答案:

答案 0 :(得分:0)

尝试将ItemsSource属性绑定到CollectionViewSource

<DataGrid x:Name="campaignDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True"
          ItemsSource="{Binding Source={StaticResource campaignViewSource}}" Grid.Row="1" RowDetailsVisibilityMode="VisibleWhenSelected">

您还需要将Source的{​​{1}}属性设置为某个源集合:

CollectionViewSource

拖放式方法实际上并不是做某事或学习的好方法。如果你想成为一名成功的WPF开发人员,你应该学习XAML和MVVM。