在我的一个应用程序中,我需要允许用户以某些方式自定义用户界面。为此,我允许用户在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/

10-11 06:00