选择不同的标签

时间:2015-09-15 15:43:14

标签: silverlight tabcontrol silverlight-5.0 tabitem

我们遇到一个问题,当关闭共享控件(在子窗口内)时,如果选择了除第一个选项卡之外的其他选项卡,则在重新加载控件时随后将禁用选项卡的内容。但是,如果您选择其他选项卡并导航回原始选项卡,则会启用内容。

Disabled tab contents

是否有人了解造成原始禁用效果的原因?我正在努力解决这个问题吗?

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# - 从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# - 从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);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

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

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

正在执行服务电话时显示

busyIndicator.IsBusy = true;

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

我只是在关闭共享控件之前将IsBusy属性设置为false,并且在重新打开共享控件时启用了所有内容。

busyIndicator.IsBusy = false;