【发布时间】:2012-09-25 20:20:40
【问题描述】:
此代码在我的应用程序中越来越常见:
<StackPanel Orientation="Vertical">
<Label Content="_ComboBox Caption"
Target="comboBox"
Margin="0"
Padding="5,5,5,1" />
<ComboBox x:Name="comboBox"
Width="72"
Margin="5,0,5,5"
Padding="5,1,5,5"
SelectedItem="{Binding ComboSelectedItem}"
ItemsSource="{Binding ComboSourceList}" />
</StackPanel>
它为我呈现了一个带字幕的组合框。
我想让我成为一个自定义控件,它是一个 ComboBox,它公开标签的内容,然后设置其他属性。可以这样使用的东西:
<Controls:CaptionedComboBox x:Name="comboBox"
Width="72"
LabelContent="_ComboBox Caption"
SelectedItem="{Binding ComboSelectedItem}"
ItemsSource="{Binding ComboSourceList}" />
但是,我考虑制作自定义控件,并且需要令人生畏的样式数量。
有没有办法接受我上面的内容并最终做这样的事情?
<StackPanel Orientation="Vertical">
<Label Content="{Binding TemplateLabelContent}"
Target="{Binding ControlName}"
Margin="0"
Padding="5,5,5,1" />
<InheritedComboBoxStuff/>
</StackPanel>
我知道那行不通。但我的观点是,我必须重新设置整个 ComboBox 的样式只是为了在它上面添加一个标签,这似乎很愚蠢。
【问题讨论】:
-
你看过UserControls吗?只需设置 DP 属性即可。
-
@HenkHolterman - 那里的问题(据我了解)是我必须重新公开 ComboBox 的所有属性。如果是这样,我想我只能选择两害相权取其轻。
-
只是你没有提到所有选项。 ControlTemplate、UserCONtrol 和 CustomControl。我认为@Sebastian 的回答值得一试。
标签: c# .net wpf custom-controls