gpt4 book ai didi

wpf - 将一个充满控件的模板添加到另一个 WPF 控件

转载 作者:行者123 更新时间:2023-12-04 05:16:47 24 4
gpt4 key购买 nike

所以我一直致力于一个项目,该项目允许我将选项卡添加到选项卡控件和每个新 TabItem 中。 .我有一堆以编程方式生成的控件。有没有办法在 XAML 中创建模板,我可以简单地将其添加到新创建的 TabItem 中?

举一个简单的例子,假设我有一个带有 TabPage 的 WPF 表单:

<Window>
<Grid>
<TabControl></Tabcontrol>
</Grid>
</Window>

我想在我的每个 TabPage 中添加 3 个按钮。
<Window>
<Grid>
<TabControl>
<TabItem>
<Button/>
<Button/>
<Button/>
</TabItem>
</TabControl>
</Grid>
</Window>

我希望能够在 XAML 编辑器(可能是 VS2012)中编辑这个包含 3 个按钮的模板,这些更改将反射(reflect)在添加到每个 TabItem 的模板中。 .

我环顾四周,大多数 WPF 模板文章都与着色或样式模板有关,这些模板似乎不是我想要的。按照我目前的方法,添加 TabItem以编程方式工作,但使编辑模板更加麻烦,而且我认为这与 WPF 的理念相反:将代码与设计断开。

我对 WPF 比较陌生,但已经看到它比 WinForms 的强大和优势,所以我在这条路上被卖了,但因为我是新手,我的术语有时有点困惑,这也使我的搜索尝试失败,不时。

任何帮助将不胜感激。如果我解释得不够好,请告诉我。

最佳答案

正如@Olwaro 提到的,您可能想要使用 UserControl .

鉴于你的例子,你可以有一个 UserControl使用此 Xaml(其中用户控件称为 ThreeButtonStack 并驻留在命名空间 WpfApplication2 中):

<UserControl x:Class="WpfApplication2.ThreeButtonStack"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<Style TargetType="Button">
<Setter Property="Margin" Value="5" />
<Setter Property="Width" Value="75" />
</Style>
</UserControl.Resources>
<StackPanel Orientation="Horizontal">
<Button Content="OK" />
<Button Content="Cancel" />
<Button Content="Retry" />
</StackPanel>
</UserControl>

然后你可以像这样在你的主应用程序中调用它:
<Window x:Class="WpfApplication2.TabPageWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:wpfApplication2="clr-namespace:WpfApplication2"
Title="TabPageWindow" Height="300" Width="300">
<TabControl>
<TabItem Header="Tab 1">
<DockPanel>
<wpfApplication2:ThreeButtonStack DockPanel.Dock="Bottom" HorizontalAlignment="Right"/>
<TextBlock>Custom Content</TextBlock>
</DockPanel>
</TabItem>
<TabItem Header="Tab 2">
<DockPanel>
<wpfApplication2:ThreeButtonStack DockPanel.Dock="Bottom" HorizontalAlignment="Right"/>
<TextBox>Editing custom stuff</TextBox>
</DockPanel>
</TabItem>
</TabControl>
</Window>

结果将是:

Screenshot

关于wpf - 将一个充满控件的模板添加到另一个 WPF 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14157382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com