3

私はWPFが初めてで、これはしばらくの間私を困惑させました:

モデルに、tabControl にバインドされた People オブジェクトの observableCollection があります。したがって、新しい People オブジェクトが追加されるたびに、People.Title をタブのヘッダーとして使用して新しいタブが作成されます。

各 People オブジェクトには、Friend オブジェクトの ObservableCollection があります。タブの内部には、Friend.FirstName 用と Friend.LastName 用の 2 つのテキスト ボックスのリストが必要です。

最初の要件は正常​​に機能していますが、2 番目の要件では「ItemsSource は既に使用されています」というエラーが表示されます

これまでの私のコードは次のとおりです。

<TabControl Name="ConversationTabs" Grid.Row="0" 
                ItemsSource="{Binding}" 
                ItemTemplate="{StaticResource HeaderInfoTabControl}"
                ContentTemplate="{StaticResource DialogueList}" />

<Window.Resources>
    <DataTemplate x:Key="HeaderInfoTabControl">
        <TextBlock Text="{Binding Title}" />
    </DataTemplate>

    <DataTemplate x:Key="DialogueList">
        <ItemsControl ItemsSource="{Binding Path=DialogueCollectionVM}"> 
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Path=Sent}" />
                <TextBlock Text="{Binding Path=DateSent}" />
                <TextBlock Text="{Binding Path=Message}" />
            </StackPanel>
        </ItemsControl>
    </DataTemplate>

</Window.Resources>

私はあなたの助けに感謝します。

4

1 に答える 1

1

アイテムをItemsControlに追加すると同時に、(ItemsSourceを介して)自動入力を使用することはできません。そのStackPanelがItemsSourceのアイテムに使用されることになっている場合は、次のようにする必要があります。

<ItemsControl ItemsSource="{Binding Path=DialogueCollectionVM}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Path=Sent}" />
                <TextBlock Text="{Binding Path=DateSent}" />
                <TextBlock Text="{Binding Path=Message}" />
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
于 2011-04-20T07:08:40.007 に答える