combobox 样式

zqsntws 2017-11-08 06:27:18
<Style TargetType="myUc:CLComboBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<Grid Background="#F7FDF7">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.7*"/>
<ColumnDefinition Width="0.3*" MaxWidth="30"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" IsReadOnly="{TemplateBinding IsReadOnly}" Text="{TemplateBinding Text}"
FontFamily="{StaticResource skinFontName}" FontSize="14" VerticalContentAlignment="Center"></TextBox>
<Border Grid.Column="0" BorderThickness="1,1,0,1" BorderBrush="#B8B8B8" CornerRadius="1,0,0,1"/>
<Border Grid.Column="1" BorderThickness="0,1,1,1" BorderBrush="#B8B8B8" CornerRadius="0,1,1,0">
<ToggleButton Style="{StaticResource ComboxStyleBtn}" IsChecked="{Binding Path=IsDropDownOpen,
Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press">
</ToggleButton>
</Border>
<Popup IsOpen="{TemplateBinding IsDropDownOpen}" Placement="Bottom" x:Name="Popup" Focusable="False" AllowsTransparency="True" PopupAnimation="Slide">
<Border CornerRadius="1" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{TemplateBinding ActualWidth}" x:Name="DropDown" SnapsToDevicePixels="True">
<Border.Effect>
<DropShadowEffect Color="Black" BlurRadius="2" ShadowDepth="0" Opacity="0.5"/>
</Border.Effect>
<ScrollViewer Margin="4,6,4,6" Style="{DynamicResource ScrollViewerStyle}" MaxHeight="{TemplateBinding MaxDropDownHeight}"
SnapsToDevicePixels="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" CanContentScroll="True">
<StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" Background="White"/>
</ScrollViewer>
</Border>
</Popup>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

<TextBox Grid.Column="0" IsReadOnly="{TemplateBinding IsReadOnly}" Text="{TemplateBinding Text}" ???
想问问怎么才能让TextBox跟模板的数据互动?因为combobox如果是允许输入的,则用combobx.text无法获取输入的数据,因为TextBox只是单纯的绑定了combobox的Text属性。
...全文
908 11 点赞 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zqsntws 2017-11-17
现在是不在items中也要允许,就像普通的combobox似的
  • 打赏
  • 举报
回复
exception92 2017-11-16
引用 9 楼 zqsntws 的回复:
想实现combobox可以选择,也可以输入,应用我列举的样式。
可以输入,当时前提时输入的内容必须在它的items中。
  • 打赏
  • 举报
回复
zqsntws 2017-11-15
想实现combobox可以选择,也可以输入,应用我列举的样式。
  • 打赏
  • 举报
回复
exception92 2017-11-14
你也可以说一下 你要用combobox实现怎么的效果
  • 打赏
  • 举报
回复
exception92 2017-11-14
引用 6 楼 zqsntws 的回复:
目前现状是这样:TextBox只是单向的显示combobox选择的数据,如果设置combobox可以输入的话就不行了,因为Textbox只显示combobx选择的数据,但输入到Textbox中的数据,通过combobox.Text属性是拿不到值的,因为值在Textbox的属性Text中。
这个通过xaml估计做不到吧,没这样用过。 你可以手动通过在Textbox的TextChanged事件中给Text赋值,不过textbox又是templatebinding到Text的,不确定是否有其它错误。
  • 打赏
  • 举报
回复
zqsntws 2017-11-13
目前现状是这样:TextBox只是单向的显示combobox选择的数据,如果设置combobox可以输入的话就不行了,因为Textbox只显示combobx选择的数据,但输入到Textbox中的数据,通过combobox.Text属性是拿不到值的,因为值在Textbox的属性Text中。
  • 打赏
  • 举报
回复
exception92 2017-11-13
TextBox跟模板的数据互动? -》TextBox 已经在模板中了,互动具体指的是什么
  • 打赏
  • 举报
回复
zqsntws 2017-11-10
还没解决呢,没有大仙帮帮忙吗?
  • 打赏
  • 举报
回复
zqsntws 2017-11-09
哪位大神可以给个解决方案,谢谢!
  • 打赏
  • 举报
回复
exception92 2017-11-09
<Style TargetType="myUc:CLComboBox"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ComboBox"> -》TargetType名称 不一致,把属性含义搞清楚了再问。
  • 打赏
  • 举报
回复
zqsntws 2017-11-09
引用 1 楼 duanzi_peng 的回复:
<Style TargetType="myUc:CLComboBox"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ComboBox"> -》TargetType名称 不一致,把属性含义搞清楚了再问。
多谢版主指正,应该是这样: <Style TargetType="ComboBox"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="ComboBox">
  • 打赏
  • 举报
回复
相关推荐
发帖
WPF/Silverlight
加入

8632

社区成员

WPF/Silverlight相关讨论
申请成为版主
帖子事件
创建了帖子
2017-11-08 06:27
社区公告
暂无公告