【问题标题】:Enabling a specific button inside a disabled grid在禁用的网格内启用特定按钮
【发布时间】:2012-05-09 21:41:24
【问题描述】:

我在一个网格内有一个按钮,其中包含许多其他按钮和控件,例如这个

<Grid IsEnabled="false">
    <Grid.ColumnsDefinition>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnsDefinition>
    <Button Content="Run"/>
    <Button Grid.Column="1" Content="Test"/>
    <Button Grid.Column="2" Content="Cancel" IsEnabled="true"/>
</Grid>

如您所见,网格已禁用,但其中的取消按钮应该已启用。

我遇到的问题是,即使我将内部按钮设置为启用,它仍然处于禁用状态,可能是因为它的父级已禁用。

有什么方法可以覆盖此行为并强制启用按钮?

我将它用于后台运行较长进程的情况,因此应禁用除取消进程之外的所有 UI 操作。

谢谢!

【问题讨论】:

    标签: wpf button grid isenabled


    【解决方案1】:

    没有。将 IsEnabled 属性设置为 false 会导致禁用所有嵌套的视觉元素。人们应该将元素的内容视为其存在的一部分。禁用元素意味着禁用其所有部分。

    最简单的解决方法是更改​​标记以满足您的需求。我宁愿把 Cancel 按钮从这个Grid 中带出来,这样它就不会受到GridIsEnabled 属性的影响

    【讨论】:

    • 我在这里带来的代码示例只是我拥有的更复杂的 UI 结构的一个简单版本。我知道您的解决方案会起作用,但这意味着我将处理许多其他同级控件的启用和禁用,这对于一个简单的请求来说将是一个很大的开销。我想知道是否可能有另一种解决方案。谢谢!
    • @Dror 你找到解决这个问题的方法了吗?
    • 对不起,从那时起已经过去了将近 10 年。我不记得这是否/如何解决。
    • 我有一种感觉是通过 EvAlex 提到的乏味路径。
    猜你喜欢
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多