C# 如果我有basecontrol,如何停止加载WPF usercontrol

C# 如果我有basecontrol,如何停止加载WPF usercontrol,c#,wpf,C#,Wpf,我有一个BaseControl,几乎我所有的控件都继承自它 现在我正在研究安全性,如果用户没有访问权限,我想阻止他们查看某些项目 我可以在基本控件的Loaded事件上执行此操作,但为时已晚,这意味着整个控件将被渲染,然后被替换。我想在它呈现之前替换它 下面是我的代码示例: public class BaseControl : UserControl { public BaseControl() { this.Loaded +=BaseControl_Loaded;

我有一个BaseControl,几乎我所有的控件都继承自它

现在我正在研究安全性,如果用户没有访问权限,我想阻止他们查看某些项目

我可以在基本控件的
Loaded
事件上执行此操作,但为时已晚,这意味着整个控件将被渲染,然后被替换。我想在它呈现之前替换它

下面是我的代码示例:

public class BaseControl : UserControl
{
    public BaseControl()
    {
        this.Loaded +=BaseControl_Loaded;
    }

    private void BaseControl_Loaded(object sender, RoutedEventArgs e)
    {

        if (!userHasAccess)
        {
            this.Content = new AccessDenied();
        }
    }
}

上面的代码工作得很好,但是有点太晚了,有没有办法在
加载
事件之前执行此操作?

您想覆盖
初始化的
,在
渲染之前设置构造函数和属性

protected override void OnInitialized(EventArgs e)
{
  if (!userHasAccess)
  {
   this.Content = new AccessDenied();
  }
  base.OnInitialized(e);
}

可以找到更多信息。

查看以下网站:

还要检查您所要求的对象生存期事件


您似乎在寻找初始化事件。UI不是放置
安全性
内容的合适位置。强烈建议您创建适当的应用程序
,并将代码放在真正属于它的地方,而不是像在winforms中那样将整个应用程序混入
Form1.cs
。@hedgehog如果它是蛇。。。然后就没有了!!!!!一百万塔克斯。。。请发布答案,以便我可以标记:)Flip Visiblity=折叠,而不是交换您的controls@HighCore... 取决于您是否希望您的安全模型是智能的。。。自我学习。。。我不喜欢关于如何“应该”实现东西的广泛评论,每个应用程序都有自己独特的需求。如果你的评论没有回答我的问题,不要发表。