タブの選択が変更されないように、次のようなことをしています。
tabControl.Items.CurrentChanging += new CurrentChangingEventHandler(Items_CurrentChanging);
void Items_CurrentChanging(object sender, CurrentChangingEventArgs e)
{
if( dataIsInvalid )
{
// Show some popup message
var item = ((ICollectionView)sender).CurrentItem;
e.Cancel = true;
tabControl.SelectedItem = item; // !! This causes the CurrentChanging event to happen twice !!
// But without this the visual tree does not update! :(
}
}
ただし、現在私が見ている問題は、上の最後の行でCurrentChangingイベントが2回発生し、ポップアップメッセージが2回表示されることです。それだけでなく、最初に別のウィンドウにフォーカスを合わせてから、タブコントロールのウィンドウにフォーカスを戻した後、2回目に表示されます。なぜこれが起こる可能性があるのか、何か考えはありますか?
-編集-私は本当に必要なだけで、再度e.Cancel
更新する必要はないようです。SelectedItem
ただし、これを行わない限り、ビジュアルツリーは更新されません。タブコントロールのビジュアルツリーがe.Cancel
発生後に更新されるように、更新する必要がない方法はありますSelectedItem
か?