0

プロパティを介してデータを DataGrid にバインドし、後でそのプロパティを更新して、データグリッドの結果を変更 (並べ替え) しようとしています。

最初に DataGrid をバインドします。

    BindingList<Booking> tourBookings;

    private async void PageFrame_Loaded_1(object sender, RoutedEventArgs e) {

            tourBookings = new BindingList<Booking>((await DataManager.BookingsRef.GetBookingHeaders(PageSize, CurrentPage)).TourBookings);

            dgBookings.DataContext = tourBookings;

    }

この時点では、DataGrid には何もありません。いずれにしても、並べ替えメソッドがあります。

    private async void DataGrid_Sorting_1(object sender, DataGridSortingEventArgs e) {

        tourBookings = new BindingList<Booking>((await DataManager.BookingsRef.GetBookingHeaders(s, asc, PageSize, CurrentPage)).TourBookings);

    }

.. データグリッドにはまだ結果がありません...

結果はどこにありますか?

ここにも私のバインディングがあります:

         <DataGrid x:Name="dgBookings" DataContext="{Binding Path=tourBookings}" Style="{StaticResource DataGridStyle}" AutoGenerateColumns="False" CanUserAddRows="False" 
                      ScrollViewer.PanningMode="VerticalOnly"  ScrollViewer.VerticalScrollBarVisibility="Auto"  ScrollViewer.CanContentScroll="True" 
                       ScrollViewer.PanningDeceleration="5"  ScrollViewer.PanningRatio="1" Grid.RowSpan="2"
                      Grid.Row="1" RowEditEnding="DataGrid_RowEditEnding_1"  CanUserSortColumns="True" Sorting="DataGrid_Sorting_1">

            <DataGrid.Columns>

                <DataGridTemplateColumn Width="*" SortMemberPath="Time" SortDirection="Ascending">
                    <DataGridTemplateColumn.Header>
                        Time
                    </DataGridTemplateColumn.Header>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding StartTime, StringFormat=HH:mm}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

                <DataGridTemplateColumn Width="*" SortMemberPath="TourID">
                    <DataGridTemplateColumn.Header>
                        Tour ID 1
                    </DataGridTemplateColumn.Header>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding TourID}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

 ..... and load of other properties and then close datagrid.columns etc
4

1 に答える 1

2

バインディングはパブリック プロパティでのみ機能し、ツアーブッキングは単なるフィールドです。

 BindingList<Booking> tourBookings {get;set;}

編集:

アイテムソースを設定する必要があります

<DataGrid ItemsSource="{Binding Path=tourBookings}" />

EDIT2:

データコンテキストをリストに設定すると、バインディングは次のようになります

<DataGrid ItemsSource="{Binding}" />
于 2013-03-21T12:51:44.317 に答える