选择不同的选项卡时禁用 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 的 BusyIndicator 控件用于 Silverlight 5 (SDK)。
这是在执行服务调用时显示的
busyIndicator.IsBusy = true;
然而,一旦服务调用返回且响应已处理,它就永远不会停止显示。由于控件是共享的,这意味着单击“保存”按钮时选择的选项卡仍处于禁用状态,出于某种我不确定的原因。
我只是在关闭共享控件之前将 IsBusy 属性 设置为 false,并且在重新打开共享控件时一切都已启用。
busyIndicator.IsBusy = false;
我们有一个问题,当关闭共享控件(在子 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 的 BusyIndicator 控件用于 Silverlight 5 (SDK)。
这是在执行服务调用时显示的
busyIndicator.IsBusy = true;
然而,一旦服务调用返回且响应已处理,它就永远不会停止显示。由于控件是共享的,这意味着单击“保存”按钮时选择的选项卡仍处于禁用状态,出于某种我不确定的原因。
我只是在关闭共享控件之前将 IsBusy 属性 设置为 false,并且在重新打开共享控件时一切都已启用。
busyIndicator.IsBusy = false;