noob の可能性のある質問で申し訳ありません。私は C# と WPF にまったく慣れていません。
いくつかのコントロールを含むウィンドウを作成しました。それらのすべてにツールチップが記入されています。ウィンドウの下部に専用の領域 (TextBlock) を用意して、ツールヒントのバロンの代わりにこれらのヒントを表示したいと考えています。私はすでにこれに対する解決策を見てきました。
public partial class MyWindow : Window
{
public MyWindow()
{
InitializeComponent();
EventManager.RegisterClassHandler(typeof(FrameworkElement), FrameworkElement.MouseEnterEvent, new MouseEventHandler(MyMouseEventHandler));
}
private void MyMouseEventHandler(object sender, MouseEventArgs e)
{
// To stop the tooltip from appearing, mark the event as handled
// But not sure if it is really working
e.Handled = true;
FrameworkElement source = e.OriginalSource as FrameworkElement;
if (null != source && null != source.ToolTip)
{
// This really disables displaying the tooltip. It is enough only for the current element...
source.SetValue(ToolTipService.IsEnabledProperty, false);
// Instead write the content of the tooltip into a textblock
textBoxDescription.Text = source.ToolTip.ToString();
}
}
テキストブロックのデータバインディングはなく、コードからテキストを単純に設定するだけです。
私の問題は、ダイアログが ShowDialog() メソッドで開始されたときに、これが最初の実行で正常に機能することです。しかし、閉じて (または非表示にして) 再度表示した後、 textBoxDescriptionは更新されなくなります。イベントが発生して処理されます。デバッグ時に、コントロールがtextBoxDescription.Textが設定されている行にまで移動し、単に TextBlock が更新されないことがわかります。TextBlock を TextBox に置き換えようとしましたが、同じ結果になりました。
TextBlock を強制的に更新する方法はありますか? なぜそれが必要なのですか?なぜそれが初めて機能するのですか?
よろしくお願いします。