Vac*_*ano 3 .net c# wpf custom-controls
此代码在我的应用程序中变得越来越常见:
<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>
Run Code Online (Sandbox Code Playgroud)
它呈现给我一个Captioned ComboBox.
我想让我成为一个自定义控件,它是一个ComboBox,用于公开Label的内容,然后设置其他属性.可以像这样使用的东西:
<Controls:CaptionedComboBox x:Name="comboBox"
Width="72"
LabelContent="_ComboBox Caption"
SelectedItem="{Binding ComboSelectedItem}"
ItemsSource="{Binding ComboSourceList}" />
Run Code Online (Sandbox Code Playgroud)
但是,我研究了制作自定义控件,并且需要一些令人畏惧的造型.
有没有办法把我上面的东西拿走,最后做这样的事情?
<StackPanel Orientation="Vertical">
<Label Content="{Binding TemplateLabelContent}"
Target="{Binding ControlName}"
Margin="0"
Padding="5,5,5,1" />
<InheritedComboBoxStuff/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
我知道那是行不通的.但我的观点是,我不得不重新设计整个ComboBox的样式,只是为了在它上面添加一个标签,这似乎很愚蠢.
你可以为它制作一个模板
<ControlTemplate x:Key="ComboWithHeader" TargetType="ContentControl">
<StackPanel Orientation="Vertical">
<Label Margin="0"
Content="{Binding ComboBoxHeader}"
DataContext="{TemplateBinding DataContext}"
Padding="5,5,5,1"
Target="comboBox" />
<ComboBox x:Name="comboBox"
Width="72"
Margin="5,0,5,5"
DataContext="{TemplateBinding DataContext}"
ItemsSource="{Binding ComboSourceList}"
Padding="5,1,5,5"
SelectedItem="{Binding ComboSelectedItem}" />
</StackPanel>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
然后,只要你想使用标题组合,只需使用
<ContentControl Template="{StaticResource ComboWithHeader}" DataContext="{Binding ComboBoxViewModel}" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10006 次 |
| 最近记录: |