C# 如果我有basecontrol,如何停止加载WPF usercontrol
我有一个BaseControl,几乎我所有的控件都继承自它 现在我正在研究安全性,如果用户没有访问权限,我想阻止他们查看某些项目 我可以在基本控件的C# 如果我有basecontrol,如何停止加载WPF usercontrol,c#,wpf,C#,Wpf,我有一个BaseControl,几乎我所有的控件都继承自它 现在我正在研究安全性,如果用户没有访问权限,我想阻止他们查看某些项目 我可以在基本控件的Loaded事件上执行此操作,但为时已晚,这意味着整个控件将被渲染,然后被替换。我想在它呈现之前替换它 下面是我的代码示例: public class BaseControl : UserControl { public BaseControl() { this.Loaded +=BaseControl_Loaded;
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... 取决于您是否希望您的安全模型是智能的。。。自我学习。。。我不喜欢关于如何“应该”实现东西的广泛评论,每个应用程序都有自己独特的需求。如果你的评论没有回答我的问题,不要发表。