リストボックスがあり、コードで項目を選択しようとしています。あるアイテムが強調表示される場合があります。つまり、背景が青く着色されていますが、別のアイテムの周りに四角い青いボックスがあります (ボックスの中空の輪郭だけを強調表示するわけではありません)。
1 つが「強調表示」され、もう 1 つが「選択」されていると言うのは正しいですか。正しく識別されていますか?
これは起こっているはずです...それは、これら2つのことが同期していないということですか?
ありがとうコーディ
リストボックスがあり、コードで項目を選択しようとしています。あるアイテムが強調表示される場合があります。つまり、背景が青く着色されていますが、別のアイテムの周りに四角い青いボックスがあります (ボックスの中空の輪郭だけを強調表示するわけではありません)。
1 つが「強調表示」され、もう 1 つが「選択」されていると言うのは正しいですか。正しく識別されていますか?
これは起こっているはずです...それは、これら2つのことが同期していないということですか?
ありがとうコーディ
この問題と戦っただけです。リストボックスのスクロールビューアはリストボックスで選択された項目も自動スクロールしますが、最初の項目にフォーカスがあり、キーボード操作を説明すると、選択された項目ではなくリストの最初の項目で操作されます。
私たちにとって修正は
this.MyListBox.UpdateLayout();
this.MyListBox.Focus();
this.MyListBox.SelectedItem = MyObject;
this.MyListBox.ScrollIntoView(this.MyListBox.SelectedItem);
アクションの順序は非常に重要なようです。
これは ListBox 内部スクロールビューアを使用していました。
背景が青色で強調表示されている項目が SelectedItem です。青い四角形の項目は、現在フォーカスがあると考えられている項目です。
通常、選択された項目は通常、同じ要素にフォーカスを移動するマウス クリックで変更されるため、フォーカスの四角形と選択された塗りつぶしは一緒に検出されます。ただし、たとえば、ListBox がまだフォーカスを持っている間にコードが選択された項目を変更する可能性があります。その場合、選択されたハイライトは新しく選択された項目を移動しますが、フォーカス四角形はそのまま残ります。(ペンダティックに注意してください。私は、実際に内部でどのように機能するかではなく、ユーザーに見えるものを説明しています)。
何が起こっているかについての洞察については、ListBox のスタイルとテンプレートのドキュメントの ListBoxItem スタイルを参照してください。