DataContext を持つ Listbox があります。項目を選択すると、再度同じ項目を選択できません。多くのオブジェクトがある場合、これは問題ではありませんが、ポスト サービスが要素を 1 つだけ含むリストを返す場合があり、ユーザーが要素を選択し、再度選択したい場合は、それを実行できません。誰でもこの問題を解決する方法を知っています
とりあえずありがとう!
DataContext を持つ Listbox があります。項目を選択すると、再度同じ項目を選択できません。多くのオブジェクトがある場合、これは問題ではありませんが、ポスト サービスが要素を 1 つだけ含むリストを返す場合があり、ユーザーが要素を選択し、再度選択したい場合は、それを実行できません。誰でもこの問題を解決する方法を知っています
とりあえずありがとう!
これを試してください、それは私のために働きます.. :)
public void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
ListBox listBox = sender as ListBox;
if (listBox != null && listBox.SelectedItem != null)
{
// do work
}
listBox.SelectedIndex = -1;
}
を使用してListBox
ナビゲーションなどを行う場合、ユーザーが項目を複数回続けて選択できるようにすることは理にかなっています。方法は次のとおりです。
「問題」は単にが変更ListBox
を通知することであり、同じ項目を選択しても変更にはなりません。したがって、メソッドの最後で無効化し、最初に無効化された状態を確認してください。
public void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
var lb = (ListBox)sender;
if (lb.SelectedIndex == -1) return;
//your selection logic here
lb.SelectedIndex = -1;
}
ティエリーが尋ねたように、なぜユーザーに同じ項目をもう一度選択させたいのですか?
リスト ボックスを埋めるアイテムが 1 つあるというエッジ ケースが 1 つだけの場合は、単一のアイテム (または複数が返された最初のアイテム) が既定で選択されていますか? その場合は、リスト ボックスで IsSynchronizedWithCurrentItem プロパティを False に設定してみてください。コードを見ずに、より良い答えを提供することは困難です。
ユーザーが項目を選択するたびに実行されるコードがある場合、それが同じ項目であっても、ワークフローの問題が発生している可能性があります。この領域のコードをリファクタリングしてワークフローを変更できるかどうかを確認したい場合があります。
アイテムを選択してもワークフローを変更できない場合は、リスト ボックス内の各アイテムを、ボタンのコントロール テンプレートを Textblock のコントロール テンプレートに変更したボタンにする必要があります。これにより、Command プロパティにバインドし、ユーザーがどの項目をクリックしたかを具体的に知ることができます。