2014-12-02 71 views
0

我正在使用DEVExpress组合框并启用了类型提前(自动搜索功能)。在组合框中,我展示了两件事情。第一项是图像,第二项是值(id)。WPF ComboBox EditTemplate - 文本框边框不会消失

地雷问题是值边框在运行时在UI中显示时出现在组合框外。我尝试设置保证金,但它没用。我的应用程序有选择主题和一些主题变得朦胧。

任何想法如何摆脱这一点?

看到第一个看起来不错,但如果我改变主题,下面的一个有点模糊。

enter image description here

我使用下面的代码相同。

<dvEx:ComboBoxEdit.EditTemplate> 
    <ControlTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <Image Source="{Binding Path=(dxe:BaseEdit.OwnerEdit).SelectedItem.Image, RelativeSource={RelativeSource Self}}" Margin="8, 0, 4, 0"/> 
      <TextBox x:Name="PART_Editor" BorderBrush="Transparent"/> 
     </StackPanel> 
    </ControlTemplate> 
</dvEx:ComboBoxEdit.EditTemplate> 

<dvEx:ComboBoxEdit.ItemTemplate> 
    <DataTemplate DataType="{x:Type vm:DesignSelectViewModel}"> 
     <StackPanel Orientation="Horizontal"> 
      <Image Source="{Binding Image}" Margin="8, 0, 4, 0"/> 
      <TextBlock Text="{Binding Name}"/> 
     </StackPanel> 
    </DataTemplate> 
</dvEx:ComboBoxEdit.ItemTemplate> 

回答

1

为了完成你的任务,我建议你重写TextBox.Template如下使它主题无关,并删除它的聚焦状态(边框和背景):

<TextBox x:Name="PART_Editor"> 
    <TextBox.Template> 
     <ControlTemplate TargetType="{x:Type TextBox}"> 
      <Grid x:Name="Root" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"> 
       <ScrollViewer x:Name="PART_ContentHost" Margin="1" Padding="{TemplateBinding Padding}"/> 
      </Grid> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsReadOnly" Value="True"> 
        <Setter Property="Opacity" TargetName="PART_ContentHost" Value="0.75"/> 
       </Trigger> 
       <Trigger Property="IsEnabled" Value="False"> 
        <Setter Property="Opacity" TargetName="Root" Value="0.5"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </TextBox.Template> 
</TextBox> 

相关MSDN文章:TextBox Styles and Templates

+0

感谢吨。它像一个茶马一样工作。 – user2519971 2014-12-03 06:47:39