组合常用的 WPF 控件以进行重用
Combining commonly used WPF-Controls for Reuse
我一遍又一遍地重复相同的代码:
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<StackPanel Orientation="Vertical">
<Label Content="Content 1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<ComboBox Style="{StaticResource CustomComboBox}"/>
</StackPanel>
</StackPanel>
它始终是输入控件(文本框、组合框...)和标签的某种组合。
我已经搜索了 this 线程,但不幸的是第二个答案依赖于绑定;我想在里面定义标签的内容和 ComboBox-Bindings,例如内容控件。
我的尝试看起来像这样(在 MainWindow.xaml 内):
<Window.Resources>
<ControlTemplate x:Key="ComboWithHeader" TargetType="ContentControl">
<StackPanel Orientation="Vertical">
<Label Width="120" Height="25" Content="{TemplateBinding Content}"/>
<ComboBox Width="120" Height="25"/>
</StackPanel>
</ControlTemplate>
</Window.Resources>
<Grid>
<ContentControl Content="My Header" Template="{StaticResource ComboWithHeader}"/>
</Grid>
但是,我无法设置内容,看起来也不太吸引人。
ContentControl占满Window,Content不可见
A ContentControl
应该使用 ContentTemplate
:
<Window.Resources>
<DataTemplate x:Key="ComboWithHeader">
<StackPanel Orientation="Vertical">
<Label Width="120" Height="25" Content="{TemplateBinding Content}"/>
<ComboBox Width="120" Height="25"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<ContentControl Content="My Header" ContentTemplate="{StaticResource ComboWithHeader}"/>
</Grid>
我一遍又一遍地重复相同的代码:
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<StackPanel Orientation="Vertical">
<Label Content="Content 1" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<ComboBox Style="{StaticResource CustomComboBox}"/>
</StackPanel>
</StackPanel>
它始终是输入控件(文本框、组合框...)和标签的某种组合。
我已经搜索了 this 线程,但不幸的是第二个答案依赖于绑定;我想在里面定义标签的内容和 ComboBox-Bindings,例如内容控件。
我的尝试看起来像这样(在 MainWindow.xaml 内):
<Window.Resources>
<ControlTemplate x:Key="ComboWithHeader" TargetType="ContentControl">
<StackPanel Orientation="Vertical">
<Label Width="120" Height="25" Content="{TemplateBinding Content}"/>
<ComboBox Width="120" Height="25"/>
</StackPanel>
</ControlTemplate>
</Window.Resources>
<Grid>
<ContentControl Content="My Header" Template="{StaticResource ComboWithHeader}"/>
</Grid>
但是,我无法设置内容,看起来也不太吸引人。 ContentControl占满Window,Content不可见
A ContentControl
应该使用 ContentTemplate
:
<Window.Resources>
<DataTemplate x:Key="ComboWithHeader">
<StackPanel Orientation="Vertical">
<Label Width="120" Height="25" Content="{TemplateBinding Content}"/>
<ComboBox Width="120" Height="25"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<ContentControl Content="My Header" ContentTemplate="{StaticResource ComboWithHeader}"/>
</Grid>