Converter を使用してコントロールに使用する DataTemplate を選択した後、バインディングを維持するのに問題があります。
私のコントロールは IAppointment のコレクションにバインドします。一部は WorkOrderAppointment 型で、一部は DowntimeAppointment 型です。タイプに基づいてツールチップを定義したいと思います。コンバーターは、型に基づいて正しい DataTemplate を選択していますが、WorkOrderToolTipTemplate および DowntimeToolTipTemplate 内のバインディングは、データ コンテキストがないかのように機能していません。
誰かが何が起こっているのか、あるいは解決策を理解するのを手伝ってくれますか?
省略された XAML:
<UserControl.Resources>
<DataTemplate x:Key="WorkOrderToolTipTemplate">
<Grid
Name="WorkOrderToolTips"
Width="400"
HorizontalAlignment="Left"
VerticalAlignment="Top"
>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="130*" />
<ColumnDefinition Width="270*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Tooltip Labels -->
<TextBlock
Grid.Row="0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="Site Name:"
/>
<TextBlock
Grid.Row="1"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="Description:"
/>
<!-- Tooltip Values -->
<TextBlock
Grid.Row="0"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{Binding Appointment.CalendarItem.SiteName}"
TextWrapping="Wrap"
/>
<TextBlock
Grid.Row="1"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{Binding Appointment.CalendarItem.Description}"
TextWrapping="Wrap"
/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="DowntimeToolTipTemplate">
<Grid
Name="DowntimeToolTips"
Width="400"
HorizontalAlignment="Left"
VerticalAlignment="Top"
>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="130*" />
<ColumnDefinition Width="270*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Tooltip Labels -->
<TextBlock
Grid.Row="0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="Site Name:"
/>
<TextBlock
Grid.Row="1"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="Event Classification:"
/>
<!-- Tooltip Values -->
<TextBlock
Grid.Row="0"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{Binding Appointment.Downtime.PlantName}"
TextWrapping="Wrap"
/>
<TextBlock
Grid.Row="1"
Grid.Column="1"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{Binding Appointment.Downtime.EventClassification}"
TextWrapping="Wrap"
/>
</Grid>
</DataTemplate>
<converters:ToolTipSelectorConverter x:Key="local_ToolTipSelectorConverter"
DowntimeDataTemplate="{StaticResource DowntimeToolTipTemplate}"
WorkOrderDataTemplate="{StaticResource WorkOrderToolTipTemplate}" />
<DataTemplate x:Key="AppointmentItemTemplate">
<TextBlock
Style="{Binding Appointment, Converter={StaticResource local_AppointmentTextStyleConverter}}"
Text="{Binding Appointment.Subject}"
TextTrimming="WordEllipsis"
TextWrapping="Wrap"
>
<ToolTipService.ToolTip>
<ToolTip ContentTemplate="{Binding Appointment, Converter={StaticResource local_ToolTipSelectorConverter}}" />
</ToolTipService.ToolTip>
</TextBlock>
</DataTemplate>
<UserControl.Resources>