我有一个TabItem的contanining一个列表框,里面有我的饲料类作为其项目源的obeservable集合。当我刷新/加载到饲料我想禁用主窗口,使得用户不能去点击其他的事情,而这个进程正在运行的集合。所以我设置tbCtrl.isEnabled=false;到表单上我的标签控制。然后,事件处理程序分配给所有的饲料都加载之后触发的自定义事件结束。

这一切工作正常,但是,对于当前正在显示选项卡控件从未被重新启用(也没有未来几年它们的观点出来,由于列表框的大小)结果的超链接。所有其他结果进一步向下都很好,因为是其他选项卡上的结果。

我打过电话选项卡控件InvalidateVisual一切都完了之后,看看是否有差别,但似乎并没有引起任何变化。

我能理解,如果它是所有超链接这样做,或者当前显示的只是那些,但我不明白为什么那些它们滚动出来的也不工作。

“发行” 图片

有帮助吗?

解决方案

我发现我的超级链接没有得到重新启用情况下的答案,它是否适用于你不知道:

当超链接的父控制被禁用(的IsEnabled = false),则超链接不会收到通知的变化,例如的

我发现IsEnabledChanged不会被解雇,即使绑定属性值改变。

我的解决办法是我的Xaml改变为不再禁用祖先控制(这是导致超链接的父是禁用)。与总是使能的父(TextBlock的),现在超链接正确地更新总是

(我有点困扰的的IsEnabled结合行为不同于控制做的,我不知道如果我不能离开启用祖先我会做什么......但至少这让我体会到了发布我有,并让我解决它。)

详细说明:WPF 3.5 SP1

其他提示

我打的是同样的问题。

我所做的是超链接的IsEnabled绑定到父,也放到了一个App全球资源。

<Style TargetType="{x:Type Hyperlink}">
    <Setter Property="IsEnabled" Value="{Binding IsEnabled, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}" />
</Style>

这不只是HyperLinks。这似乎是更具体TextBlock这当然是你用什么来包装一个WPF HyperLink。这将给予同样的问题:

<TextBlock>
    <Run Text="Barcode:"/>
    <InlineUIContainer BaselineAlignment="Center">
        <TextBox Text="{Binding OriginalPackage.BarcodeNumber}" />
    </InlineUIContainer>
</TextBlock>

我希望设置IsEnabled="True"将修复它,但它似乎没有没有。

在简单的解决方案是使用一个与StackPanel Orientation="Horizontal"

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top