在我的一个应用程序中,我需要允许用户以某些方式自定义用户界面。为此,我允许用户在XAML中指定用户界面,该界面在应用程序启动时会动态加载。这很好。
现在,我想向用户提供自定义控件,该控件是从Border
派生的(我们称之为MyFrame
)。
我需要确保MyFrame
可能不是另一个MyFrame
的子级,因此应防止以下情况:
<ns:MyFrame>
<Grid>
<ns:MyFrame />
</Grid>
</ns:MyFrame>
我应该如何实施呢?
最佳答案
您将无法在编译时执行此操作。
但是,在运行时,您可以使用this visual tree walker检查何时创建MyFrame的新实例(如果它具有父MyFrame)。如果是这样,请引发异常。
关于c# - 只允许WPF/XAML中某些类型的子级?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8880736/