选择不同的选项卡时禁用 TabItem 内容

TabItem contents disabled when selecting different tabs

我们有一个问题,当关闭共享控件(在子 window 中)时,当 select 编辑了第一个选项卡以外的其他选项卡时,选项卡的内容被禁用随后在重新加载控件时被禁用。但是,如果您 select 一个不同的选项卡并导航回原始选项卡,则内容将被启用。

有没有人知道是什么导致了最初的禁用效果,并在我正在努力解决这个问题时解决了这个问题?

XAML

 <customTab:CustomTabControl x:Name="ctcNoteTabControl" Margin="10"> 
    <customTab:CustomTabItem Header="Details">
        <Border Background="White" CornerRadius="10">
            ...
        </Border>
    </customTab:CustomTabItem>
    <customTab:CustomTabItem Header="Attachments / Email Alerts">
        <Border Background="White" CornerRadius="10">
            ...
        </Border>
    </customTab:CustomTabItem>
    <customTab:CustomTabItem Header="Assets" x:Name="ctiAssets">
        <Border Background="{StaticResource CurveBlockBackground}" CornerRadius="10" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="2">
            ...
        </Border>
    </customTab:CustomTabItem>
</customTab:CustomTabControl>

C# - 自定义 class 继承自 TabControl

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace ReACTSL.Control
{
    public class CustomTabControl : TabControl
    {
        protected override void OnKeyDown(KeyEventArgs e)
        {
            switch (e.Key)
            {
                case Key.Home:
                case Key.End:
                    e.Handled = true;
                    break;
                default:
                    break;
            }

            base.OnKeyDown(e);
        }
    }
}

C# - 自定义 class 继承自 TabItem

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace ReACTSL.Control
{
    public class CustomTabItem : TabItem
    {
        protected override void OnKeyDown(KeyEventArgs e)
        {
            switch (e.Key)
            {
                case Key.Home:
                case Key.End:
                case Key.Left:
                case Key.Right:
                case Key.Up:
                case Key.Down:
                    e.Handled = true;
                    break;
                default:
                    break;
            }

            base.OnKeyDown(e);
        }
    }
}

我找到了答案,谢天谢地这不是与 TabControl 相关的问题。

经过进一步调查,问题仅在单击“保存”按钮时出现,而不是在“取消”或子 windows 关闭按钮时出现。除了用于保存内容的服务调用之外,它们之间的唯一区别是使用来自同一 System.Windows.Controls.dll 的 BusyIndi​​cator 控件用于 Silverlight 5 (SDK)。

这是在执行服务调用时显示的

busyIndicator.IsBusy = true;

然而,一旦服务调用返回且响应已处理,它就永远不会停止显示。由于控件是共享的,这意味着单击“保存”按钮时选择的选项卡仍处于禁用状态,出于某种我不确定的原因。

我只是在关闭共享控件之前将 IsBusy 属性 设置为 false,并且在重新打开共享控件时一切都已启用。

busyIndicator.IsBusy = false;