WPF窗口/用户控件继承XAML

本文关键字:继承 XAML 控件 用户 窗口 WPF | 更新日期: 2023-09-27 18:27:09

我正在为一个游戏实现一个编辑器,遇到了一个我似乎无法理解的小麻烦。我的谷歌功夫也让我无法找到答案,无论我想要的是否可能。

我的编辑器基本上为它管理的每个对象都有一个详细窗口,这个详细窗口总是一样的:一个选项卡控件,在选项卡上称为"属性",以及一个或多个特定于该窗口所针对对象的选项卡。

我想最好有一个BaseEditor.xaml,它定义了TabControl和Properties选项卡,您可以根据需要扩展和添加更多选项卡。

我尝试了多种解决方案,一种是制作UserControl,在其上添加TabControl,然后向其添加CompositeCollection,该CompositeCollection绑定到代码后面的一个属性,然后在将用户控件添加到窗口时,我可以对其进行技术修改。然而,它一点也不起作用,而且我也不高兴我必须将UserControl添加到窗口中,而不是从窗口扩展。

总而言之,这是我的第一次尝试:

<UserControl>
    <Grid>
        <TabControl HorizontalAlignment="Left" Height="300" VerticalAlignment="Top" Width="300">
            <TabControl.ItemsSource>
                <CompositeCollection>
                    <CollectionContainer Collection="{Binding TabItems}" />
                    <TabItem Header="Properties" />
                </CompositeCollection>
            </TabControl.ItemsSource>
        </TabControl>
    </Grid>
</UserControl>

然后在窗口上,它是这样使用的:

<Window>
    <Grid>
        <UserControl>
            <UserControl.TabItems>
                <TabItem Header="Test" />
            <UserControl.TabItems>
        </UserControl>
    </Grid>
</Window>

这是伪代码,但正如所说,它不起作用,它只会显示属性选项卡,仅此而已

任何建议都将不胜感激!

WPF窗口/用户控件继承XAML

我最终制作了一个TabControl,您可以根据需要向其注册选项卡(例如,通过RegisterTab-方法,而不是试图通过XAML定义它。