WPF ComboBox EditTemplate - TextBox边框不会消失

时间:2014-12-02 10:15:24

标签: c# wpf xaml wpf-controls devexpress

我正在使用DEVExpress组合框并且已启用了类型提前(自动搜索功能)。在组合框中,我展示了两件事。第一项是图像,第二项是值(id)。

我的问题是,在运行时在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 个答案:

答案 0 :(得分: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