私が直面している問題は非常に厄介です。
私は2つのtabItems(Home、Show)を持つtabControlを持っています
ホームには、MouseLeftButtonDown イベントを処理する画像があります。このイベントは、Show TabItem の可視性を変更し、Selected にする必要があります。
コードには、tabControl.SelectedIndex = 1; があります。tabControl SelectionChangeEvent を強制します (これを使用して、Show および Home TabItems の前景を変更します)。
私が直面している問題は、フォーカスが Show に渡されるのではなく、Home に残っていることです。コードで実行される最後の関数である SelectionChange イベント ハンドラーの最後のステップで、UI に表示される内容が正しいため、コードに問題はありません。
その後、何が実行されますか?誰でも助けることができますか?
private void Main_clientImage_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
showMenu.Visibility = Visibility.Visible;
setTabSelected("showMenu");
}
public void setTabSelected(String name)
{
for (int i = 0; i tabControl.Items.Count ; i++)
{
TabItem item = tabControl.Items.GetItemAt(i) as TabItem;
if (item.Name.Equals(name))
{
selectedTab=i;
tabControl.SelectedIndex = i;
item.Foreground = new SolidColorBrush(Colors.Black);
}
else
{
item.Foreground = new SolidColorBrush(Colors.White);
}
}
}
private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
for (int i = 0; i tabControl.Items.Count; i++)
{
TabItem item = tabControl.Items.GetItemAt(i) as TabItem;
if (tabControl.SelectedIndex == i)
{
item.Foreground = new SolidColorBrush(Colors.Black);
}
else
{
item.Foreground = new SolidColorBrush(Colors.White);
}
}
}
//編集: MouseLeftButtonDown イベントに単純な e.Handler = true を追加して解決しました。これの何が問題なのですか?