WPF:将背景保留在边框中

时间:2016-06-13 14:02:04

标签: c# wpf

我有一个树视图,其中的项目可以有不同的颜色。喜欢这个

border problem

正如您所看到的,背景比边框大。如何将背景颜色保留在边框内?

这是相关代码:

<DataTemplate DataType="{x:Type models:MyClass}">
    <Border BorderBrush="Black" 
            HorizontalAlignment="Stretch" 
            BorderThickness="1" 
            Margin="2" >                
        <TextBlock Text="{Binding Path=Name}" 
                   Foreground="Black" 
                   Width="{Binding Path=ActualWidth, ElementName=MyTreeView, Mode=OneWay}" 
                   Background="{Binding Background}" 
                   Margin="3" />
    </Border>
</DataTemplate>

1 个答案:

答案 0 :(得分:0)

要设置背景,我在TextBlock中使用了一个属性

Background="{Binding Background}" 

在我的ViewModel中,我设置TreeViewItem这样的背景

var item = new TreeViewItem { Header = myClassInstance };
item.Background = Brushes.Blue;

导致背景颜色重叠。

我将其更改为将背景设置为TreeViewItem,而不是设置为项目中的类实例。所以我将上面两行改为

var item = new TreeViewItem { Header = myClassInstance };
myClassInstance.Background = Brushes.Blue;

它按预期工作。