繁体   English   中英

如果我有basecontrol,如何阻止我的WPF用户控件加载

[英]How to stop my WPF usercontrol from loading, if i have basecontrol

我有一个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();
        }
    }
}

上面的代码工作得很好,但有点太晚了,有没有办法可以在Loaded事件之前做到这一点?

您想要覆盖OnInitialized ,其中在Render发生之前正在设置构造函数和属性。

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

更多信息可以在这里找到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM