はElementName
あたりDataTrigger
とバインドを使用します。
<StackPanel>
<TextBlock>
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=cmbSystemVoltage, Path=IsKeyboardFocusWithin}"
Value="True">
<Setter Property="Text"
Value="{Binding ElementName=cmbSystemVoltage, Path=ToolTip}" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<ComboBox Name="cmbSystemVoltage" ToolTip="RMS value of phase-phase voltage in kV" />
</StackPanel>
EDIT
あなたは私はむしろ購読うTextBlock
に複数のコントロールのツールヒントを表示する場合〜PreviewGotKeyboardFocus Event
:
<Window PreviewGotKeyboardFocus="Window_PreviewGotKeyboardFocus">
<StackPanel>
<TextBlock x:Name="toolTipIndicator" />
<ComboBox ToolTip="Sample text" />
<TextBox ToolTip="Other sample text" />
</StackPanel>
</Window>
。
void Window_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
FrameworkElement element = e.NewFocus as FrameworkElement;
if (element != null && element.ToolTip != null)
{
this.toolTipIndicator.Text = element.ToolTip.ToString();
}
else
{
this.toolTipIndicator.Text = string.Empty;
}
}
出典
2012-05-02 11:06:53
LPL
サンプルコードを投稿していただきありがとうございます。その仕事は大丈夫です。複数のコントロール(ComboBox、TextBoxなど)がある場合、特定のコントロールのGotFocus()に基づいて、すべてのコントロールのツールチップを1つのTextBlockにバインドできますか? – Hebbar
MVVMパターンを使用して、コントロールをモデルにバインドしています。私が正しいとすれば、添付されたコードはMVVMパターンに違反していますか? – Hebbar
いいえ、このコードビハインドはビューにのみ属しているためです。 – LPL