我们遇到一个问题,当关闭共享控件(在子窗口内)时,如果选择了除第一个选项卡之外的其他选项卡,则在重新加载控件时随后将禁用选项卡的内容。但是,如果您选择其他选项卡并导航回原始选项卡,则会启用内容。
是否有人了解造成原始禁用效果的原因?我正在努力解决这个问题吗?
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);
}
}
}
答案 0 :(得分:2)
我找到了答案,谢天谢地,这不是与TabControl相关的问题。
经过进一步调查后,问题只发生在单击“保存”按钮而不是“取消”或“子窗口关闭”按钮上。除了保存内容的服务调用之外,它们之间的唯一区别是使用来自Silverlight 5(SDK)的相同System.Windows.Controls.dll的BusyIndicator控件。
正在执行服务电话时显示
busyIndicator.IsBusy = true;
然而,一旦服务调用返回并且响应已被处理,它就永远不会停止显示。由于控件是共享的,这意味着单击“保存”按钮时选中的选项卡仍然处于禁用状态,由于某些原因我不确定。
我只是在关闭共享控件之前将IsBusy属性设置为false,并且在重新打开共享控件时启用了所有内容。
busyIndicator.IsBusy = false;