wpf 实现为textbox添加下拉框

wpf 实现为textbox添加下拉框,第1张

1. 设置属性 IsEditable="True" Combobox就可编辑

2. 下拉框正常绑定数据就行,如果像上图每个Item都有个删除功能,那就需要重写样式,可参考下面的代码(带有动画效果,可删除)

<Style TargetType="{x:Type ComboBoxItem}">

<Setter Property="SnapsToDevicePixels"

Value="true"/>

<Setter

Property="HorizontalContentAlignment" Value="Stretch"/>

<Setter

Property="VerticalContentAlignment" Value="Center"/>

<Setter Property="Padding"

Value="3"/>

<Setter Property="Focusable"

Value="False"/>

<Setter Property="Template">

<Setter.Value>

<ControlTemplate

TargetType="{x:Type ComboBoxItem}">

<Grid SnapsToDevicePixels="true" FocusVisualStyle="{x:Null}">

<Rectangle x:Name="BackgroundHighlight" FocusVisualStyle="{x:Null}"

Margin="-1" Stroke="#A0FFFFFF"/>

<ContentPresenter

Content="{Binding LoginName}" FocusVisualStyle="{x:Null}"

HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"

VerticalAlignment="{TemplateBinding VerticalContentAlignment}"

SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"

x:Name="contentPresenter" Margin="{TemplateBinding Padding}"/>

<Button Width="30"

Height="30" HorizontalAlignment="Right" Tag="{Binding LoginName}"

Style="{StaticResource CloseButton}" Click="BtnDeleteRecord_Click"/>

</Grid>

<ControlTemplate.Triggers>

<Trigger

Property="IsMouseOver" Value="True">

<Trigger.ExitActions>

<BeginStoryboard

Storyboard="{StaticResource HoverOff}"

x:Name="HoverOff_BeginStoryboard"/>

</Trigger.ExitActions>

<Trigger.EnterActions>

<BeginStoryboard

Storyboard="{StaticResource HoverOn}"

x:Name="HoverOn_BeginStoryboard"/>

</Trigger.EnterActions>

</Trigger>

<Trigger

Property="IsHighlighted" Value="true"/>

<Trigger

Property="Selector.IsSelected" Value="True">

<Trigger.ExitActions>

<BeginStoryboard

Storyboard="{StaticResource SelectedOff}"

x:Name="SelectedOff_BeginStoryboard1"/>

</Trigger.ExitActions>

<Trigger.EnterActions>

<BeginStoryboard

Storyboard="{StaticResource SelectedOn}"

x:Name="SelectedOn_BeginStoryboard1"/>

</Trigger.EnterActions>

</Trigger>

</ControlTemplate.Triggers>

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

写combobox的comboboxitem的样式就可以了

<ComboBox>

<ComboBox.Resources>

<Style TargetType="{x:Type ComboBoxItem}">

<Setter Property="Template">

<Setter.Value>

<ControlTemplate TargetType="{x:Type ComboBoxItem}">

<StackPanel Orientation="Horizontal">

<TextBlock Text="{Binding 产品编码}"></TextBlock>

<TextBlock Text="{Binding 产品名称}"></TextBlock>

<TextBlock Text="{Binding 产品价格}"></TextBlock>

<TextBlock Text="{Binding 产品等级}"></TextBlock>

</StackPanel>

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

</ComboBox.Resources>

</ComboBox>

后台绑定combobox的itemsource就可以。

什么控件都可以实现,只要重写样式就行了,放一个popup控件,如果你要鼠标放上去就马上出来,就重写tooltip,这些都是非常简单的事情。wpf是超灵活的桌面布局应用,只要重写样式,随便怎么整都可以。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11957487.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存