【问题标题】:UserControls, TabControl, Window confusionUserControls、TabControl、窗口混乱
【发布时间】:2010-12-26 07:45:42
【问题描述】:

我在主窗口的 tabcontrol 中的 tabitems 中有许多用户控件。每个 tabitem 一个用户控件都在一个窗口内。

在其中一个控件(其中一个 tabitems 内部)执行一些代码后,我想启用/禁用其他 tabitems。

我该怎么做?

【问题讨论】:

    标签: c# wpf visual-studio-2008 tabcontrol


    【解决方案1】:

    通常你会在模型对象中执行逻辑,所以你有“执行”的事件会改变模型(通过方法调用),然后模型会更新它的内部状态,这将由DependencyProperties 反映,您将通过 Xaml 绑定您的 UI。

    【讨论】:

    • 同意。使用主视图模型“Tab1Enabled”中的属性并将触发器绑定到它。
    • 您能详细说明一下吗?您将如何将触发器绑定到它?
    【解决方案2】:

    您可以修改启用和可见的属性:

    tabPage1.Enabled = false;
    tabPage1.Visible = false;
    

    认为这更适合 OP:

    FrameworkElement parent = userControl.Parent as FrameworkElement; // As is not needed, 'userControl' could be 'this'
    
    if (FrameworkElement != null)
    {
        parent.IsEnabled = false;
        parent.IsVisible = false;
    }
    

    【讨论】:

    • 这很模糊,请随时提问。
    • 刚刚注意到“wpf”标签。我的例子可能不适用。仍然没有赶上这股潮流:-P
    • msdn.microsoft.com/en-us/library/… 看起来你可以使用:tabItem1.IsEnabled = false; tabItem1.IsVisible = false;
    • 抱歉,很难解释。问题是在用户控件内部,它在 tabitem 内部,在窗口内部 - 我无法像 tabitem.IsEnabled 那样访问 tabitem。如果我使用文件后面的窗口代码,我可以像那样访问它,但是那里没有代码。真的只是为了演示。我正在尝试从后面的用户控件代码访问 tabitem 属性。抱歉...这不是最容易解释的事情!
    • 我想我明白了。要禁用的代码在您的“用户控件”中,您需要它来确定它附加到什么。我无法在评论中正确发布代码,所以请检查我的新答案。
    猜你喜欢
    • 2011-09-24
    • 2023-03-10
    • 2014-01-19
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多