私が探しているのはMVVMだと思っていますが、私が見てきた例は私の問題に基づいた例を助けてくれません。私は既にTabControlのコンテンツを持っているので、例外がスローされるのでTabControl.ItemsSource = CourtCases
を使用することができませんでした。TabControl ItemsSourceを既存のTabItemでリストにバインドする
Items collection must be empty before using ItemsSource.
...といくつかのタブが閉じられなければならないので、を使用すると、より多くの作業が必要になることがあります。
私はTabControlを持っています。最初のタブには人のリストを含むDataGridがあり、DataGridでアイテムがクリックされるたびにその人の詳細を含む新しいタブが作成されます。 PersonオブジェクトをTabItemの "scope/class"に渡して、その人の内容を表示する必要があります。私はあなたが下に見ることができる人の詳細TabItemのためにDataTemplate
を作成しました。
<TabControl Name="AttorneysTabControl" Grid.Column="2" Grid.Row="0">
<TabControl.Resources>
<DataTemplate x:Key="AttorneyTabHeader">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Attorney.Names}" Margin="2,0,0,0" FontSize="16" VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="AttorneyTabContent">
<StackPanel>
<TextBlock Text="{Binding Attorney.Names}" />
<TextBlock Text="{Binding Attorney.Age}"/>
<ToolBar>
<Button ToolTip="">Delete</Button>
<Button ToolTip="">Edit</Button>
</ToolBar>
</StackPanel>
</DataTemplate>
</TabControl.Resources>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Attorneys" Margin="2,0,0,0" FontSize="16" VerticalAlignment="Center" />
</StackPanel>
</TabItem.Header>
<TabItem.Content>
<Grid Background="#FFE5E5E5" Height="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="3*" />
</Grid.ColumnDefinitions>
...
</Grid>
</TabItem.Content>
</TabItem>
<!-- This part here -->
<!-- I want this to repeat. I think I should use a UserControl for this since I want the content to have it's own class -->
<TabItem ContentTemplate="{StaticResource AttorneyTabContent}" HeaderTemplate="{StaticResource AttorneyTabHeader}" />
</TabControl>
マスターディテールバインディングを調べます。ここには[SAMPLE](https://code.msdn.microsoft.com/windowsdesktop/CSWPFMasterDetailBinding-c78566ae)があります。 – jsanalytics
実際には設計されていない方法でコントロールを使用しようとしています。このような場合は、コントロールをUserControlにラップし、独自のItemsSource DPを公開し、コードビハインドでタブの管理を手動で処理する必要があります。 – Will
はい、それは私がやったことです。私はそれが不可能だと分かった。 – LogicDev