我面临的问题非常烦人 .
我有一个tabControl与2 tabItems(主页,显示)主页选项卡启动为可见并显示为隐藏
在Home我有一个图像,我处理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来解决它 . 这个东西怎么了?
3 回答
我在方法中更改了
TabControl
的TabControl
void open_Click(object sender, RoutedEventArgs e)
并且是从
<Button Click="open_Click"
和<DataGrid MouseDoubleClick="open_Click"
完成的 .只有加入
在方法
open_Click
的最后,它适用于MouseDoubleClick
,正如Fotis在问题中提到的那样 .你的代码有问题 .
在上面的代码中,我正在检查
item.Header.Equals(name)
并设置item.IsSelected = true
. 有时selectionindex无法正常工作 . 上面的代码应该解决您的问题 .在TabControl的SelectedItem属性发生更改后,您需要确保SelectedItem.IsFocused = true . 如果不是在更改SelectedItem属性后立即使用SelectedItem.Focus() . 它对我的情况有帮助 .