WPF默认样式与继承

时间:2014-07-08 07:39:27

标签: wpf .net-3.5

我必须将多选树视图集成到现有的wpf应用程序(.NET 3.5)中。由于此功能尚未开箱即用,我已经下载了TreeViewEx,它可以满足我的需求(在对.NET 3.5进行一些改编之后)。

像这样配置的示例应用程序

<Window 
    x:Class="W7StyleSample.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:Controls="clr-namespace:System.Windows.Controls;assembly=TreeViewEx" 
    xmlns:Model="clr-namespace:W7StyleSample.Model" 
    Title="MainWindow" Height="350" Width="261"
    AutomationProperties.Name="TestApp2Window" >
    <Window.Resources>
        <Style TargetType="Controls:TreeViewExItem">
            <Setter Property="IsExpanded" Value="{Binding IsExpandedValue}"/>
        </Style>
    </Window.Resources>
    <DockPanel>
        <Controls:TreeViewEx x:Name="tree"
         AutomationProperties.Name="TestApp2Tree"
         ItemsSource="{Binding Children}">
            <Controls:TreeViewEx.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type Model:Node}">
                    <TextBlock Text="{Binding}"/>
                </HierarchicalDataTemplate>
            </Controls:TreeViewEx.ItemTemplate>
        </Controls:TreeViewEx>
    </DockPanel>
</Window>

运行时看起来像这样:
Sample application
这正是我想要的前景,背景,项目突出显示,选择等。

当我将它集成到我的应用程序中时:

<controls:TreeViewEx Name="m_tvLeft" 
                     ItemsSource="{Binding Source={StaticResource LeftGridSource}}" 
                     SelectionChanged="OnTvLeftSelectionChanged"
                     MouseDoubleClick="OnTvLeftItemMouseDoubleClick" />

看起来像这样:
My app
行高太大,突出显示颜色不符合要求,可扩展节点无法扩展。

问题:如何将此组件设置为与演示应用程序中的相同?

我没有WPF向导,但猜测这与样式继承有关。在做了一些研究之后,我还没有找到这种造型的来源,也没有办法按要求覆盖它。

某些解决方案尝试:

将样式应用于:

<controls:TreeViewEx Name="m_tvLeft" 
                     ItemsSource="{Binding Source={StaticResource LeftGridSource}}" 
                     SelectionChanged="OnTvLeftSelectionChanged"
                     MouseDoubleClick="OnTvLeftItemMouseDoubleClick">
   <controls:TreeViewEx.Resources>
      <Style TargetType="controls:TreeViewExItem">
         <Setter Property="Margin" Value="0"/>
         <Setter Property="Padding" Value="0"/>
         <Setter Property="FontSize" Value="10"/>
      </Style>
   </controls:TreeViewEx.Resources>
</controls:TreeViewEx>

这样,字体大小正确应用,但两个树节点之间的边距不会减小。

<controls:TreeViewEx Name="m_tvLeft" 
                     ItemsSource="{Binding Source={StaticResource LeftGridSource}}" 
                     SelectionChanged="OnTvLeftSelectionChanged"
                     MouseDoubleClick="OnTvLeftItemMouseDoubleClick">
   <controls:TreeViewEx.Resources>
      <Style TargetType="controls:TreeViewExItem" BaseOn="{x:Null}"/>
   </controls:TreeViewEx.Resources>
</controls:TreeViewEx>

我无法使用这种风格看到任何效果。

0 个答案:

没有答案