1

ListBoxのItemTemplate内にネストされたデータグリッドがあります。これを使ってデータ構造のような木を表示しようとしています。私の授業は以下の通りです。

私のデータコンテキストのオブジェクトにはList<Section>名前が含まれていSectionsます。私のリストボックスはこれにバインドされています。それぞれに名前付きSectionが含まれ、eacItemTemplateのDataGridはこれにバインドされます。List<Item>Items

アプリを実行すると、バインディングのある行でXAMLからnull参照例外が発生します。これを行うためのより良い/代替の方法はありますか、それともバインディングのトリックを見逃していますか?

<Window.Resources>
    <CollectionViewSource x:Key="SectionSource" /><!-- this is initialized and filled with an ObservableCollection<Section> Sections when the window loads-->
</Window.Resources>

<ListBox x:Name="lstIngredients" ItemsSource="{Binding Source={StaticResource SectionSource}}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <DataTemplate.Resources>
                <CollectionViewSource x:Key="itemsSource" Source="{Binding Items}"/>
            </DataTemplate.Resources>

<DataGrid x:Name="dgItems" IsReadOnly="false" AutoGenerateColumns="False" SelectionMode="Single" SelectionUnit="FullRow" IsSynchronizedWithCurrentItem="True" 
    DataContext="{Binding}"
    ItemsSource="{Binding Source={StaticResource Items}}"
    EnableRowVirtualization="false" 
    VirtualizingStackPanel.VirtualizationMode="Standard"
        <DataGrid.Columns>
<DataGridTemplateColumn Width="2*" Header="{lex:LocText ChickenPing.Shared:Strings:Measurement}">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock x:Name="quantity" Text="{Binding Measurement}" TextTrimming="CharacterEllipsis" TextAlignment="Left"/>
                    <!-- Null reference on this line caused by the binding. If I set this to any DependencyProperty on an Item object, I get a null reference-->
                </DataTemplate>
4

2 に答える 2

0

これはパスである必要があります

 ItemsSource="{Binding Source={StaticResource Items}}"

 ItemsSource="{Binding Path=PropertyThatIsCollection}"

そして、DataContext行を削除します

于 2012-04-07T17:48:28.900 に答える
0

最終的に、これをTemplateColumnsの1つに設定されたイベントまで追跡しました。イベントをから切り替える

<TextBlock x:Name="quantity" Text="{Binding Measurement}" GotFocus="txt_GotFocus" />

<Style x:Key="FocusableTextbox" TargetType="{x:Type TextBox}"> 
    <EventSetter Event="GotFocus" Handler="txt_GotFocus" /> 
</Style>
...
<TextBlock x:Name="quantity" Text="{Binding Measurement}" Style={StaticResource FocusableTextbox} />
于 2012-04-10T08:16:39.310 に答える