3

私はWPF開発に不慣れです。

MVVM パターンを使用して wpf アプリケーションを開発しています。「ComboBox」と「TextBlock」コントロールがありました。ComboBox にフォーカスを移すと、Textblock は Combobox のツール ヒントを表示する必要があります。コンボボックスはビューモデルにバインドされています。

<ComboBox Name="cmbSystemVoltage" 
          ToolTip="RMS value of phase-phase voltage in kV" 
          ItemsSource="{Binding Path=SystemVoltageStore}"
          SelectedItem="{Binding Path=SelectedSystemVoltage}" 
          DisplayMemberPath="SystemVoltageLevel"/>

どうすればこれを達成できますか。そのためのサンプル コードは非常に役立ちます。

ありがとう、スディ

4

1 に答える 1

2

a を使用し、次のようDataTriggerにバインドしElementNameます。

<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>

編集

複数のコントロールのツールチップを表示したい場合は、次の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-02T11:06:53.873 に答える