将isEnabled = true设置为父控件后,超链接保持不活动状态

Psy*_*nic 12 wpf hyperlink isenabled

我有一个TabItem连接一个列表框,它有一个可观察的我的feed类集合作为它的项目源.当我将提要刷新/加载到集合中时,我想要禁用主窗口,以便用户在此进程运行时无法单击其他内容.所以我tbCtrl.isEnabled=false;在表单上设置了我的选项卡控件.然后将事件处理程序分配给自定义完成事件,该事件在加载所有订阅源后触发.

这一切都运行正常,但是当前显示在选项卡控件上的结果的超链接永远不会重新启用(由于列表框大小,下面几个也不在视图之外).所有其他结果进一步下降都很好,其他选项卡上的结果也是如此.

我已经尝试InvalidateVisual在所有内容完成后调用选项卡控件,看看是否有所作为,但这似乎不会导致任何更改.

我可以理解它是否所有超链接都在做,或者只是当前显示的那些,但我不明白为什么那些没有滚动的也没有工作.

问题图片http://i42.tinypic.com/5wm0qx.jpg

Hel*_*Sam 13

我遇到了同样的问题.

我所做的是将HyperLink的IsEnabled绑定到父级,并将其放在App全局资源中.

<Style TargetType="{x:Type Hyperlink}">
    <Setter Property="IsEnabled" Value="{Binding IsEnabled, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}" />
</Style>
Run Code Online (Sandbox Code Playgroud)


Dar*_*ryn 6

我找到了我的超链接没有重新启用的情况的答案,不确定它是否适用于你的:

我发现当禁用Hyperlink的父控件(IsEnabled = false)时,超链接不会收到更改通知,例如,即使绑定属性更改值,也不会触发IsEnabledChanged.

我的解决方案是将我的Xaml更改为不再禁用祖先控件(这导致Hyperlink的父级被禁用).在始终启用父(TextBlock)的情况下,现在Hyperlink始终正确更新.

(我有点担心IsEnabled绑定的行为与Controls不同,而且我不确定如果我不能让祖先启用我会做什么......但至少这让我理解我的问题有,并让我解决它.)

详细信息:WPF 3.5 SP1