首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

以下这个代码很长,是TreeViewItem的默认内置的xaml模板,小弟我想修改一个细节,不知道具体做法

2012-04-01 
以下这个代码很长,是TreeViewItem的默认内置的xaml模板,我想修改一个细节,不知道具体做法。下面这个代码很

以下这个代码很长,是TreeViewItem的默认内置的xaml模板,我想修改一个细节,不知道具体做法。
下面这个代码很长(是TreeViewItem默认外观的模板代码),但是大家不用全部都看,只需要注意里面有一个控件:

……
<Border Name="Bd"
  Grid.Column="1"
  Background="{TemplateBinding Background}"
  BorderBrush="{TemplateBinding BorderBrush}"
……

我想修改这个Border,加入一行属性,就是:Grid.ColumnSpan=2,

具体怎么实现?求提供思路。或者如果简单的话,可否给出几行代码看看?











C# code
<!--=================================================================      TreeViewItem  ==================================================================--><Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">  <Setter Property="Focusable" Value="False"/>  <Setter Property="Template">    <Setter.Value>      <ControlTemplate TargetType="ToggleButton">        <Grid          Width="15"          Height="13"          Background="Transparent">          <Path x:Name="ExpandPath"            HorizontalAlignment="Left"             VerticalAlignment="Center"             Margin="1,1,1,1"            Fill="{StaticResource GlyphBrush}"            Data="M 4 0 L 8 4 L 4 8 Z"/>        </Grid>        <ControlTemplate.Triggers>          <Trigger Property="IsChecked"               Value="True">            <Setter Property="Data"                TargetName="ExpandPath"                Value="M 0 4 L 8 4 L 4 8 Z"/>          </Trigger>        </ControlTemplate.Triggers>      </ControlTemplate>    </Setter.Value>  </Setter></Style><Style x:Key="TreeViewItemFocusVisual">  <Setter Property="Control.Template">    <Setter.Value>      <ControlTemplate>        <Border>          <Rectangle Margin="0,0,0,0"                 StrokeThickness="5"                 Stroke="Black"                 StrokeDashArray="1 2"                 Opacity="0"/>        </Border>      </ControlTemplate>    </Setter.Value>  </Setter></Style><Style x:Key="{x:Type TreeViewItem}"     TargetType="{x:Type TreeViewItem}">  <Setter Property="Background"      Value="Transparent"/>  <Setter Property="HorizontalContentAlignment"      Value="{Binding Path=HorizontalContentAlignment,              RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>  <Setter Property="VerticalContentAlignment"      Value="{Binding Path=VerticalContentAlignment,              RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>  <Setter Property="Padding"      Value="1,0,0,0"/>  <Setter Property="Foreground"      Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>  <Setter Property="FocusVisualStyle"      Value="{StaticResource TreeViewItemFocusVisual}"/>  <Setter Property="Template">    <Setter.Value>      <ControlTemplate TargetType="{x:Type TreeViewItem}">        <Grid>          <Grid.ColumnDefinitions>            <ColumnDefinition MinWidth="19"                      Width="Auto"/>            <ColumnDefinition Width="Auto"/>            <ColumnDefinition Width="*"/>          </Grid.ColumnDefinitions>          <Grid.RowDefinitions>            <RowDefinition Height="Auto"/>            <RowDefinition/>          </Grid.RowDefinitions>          <ToggleButton x:Name="Expander"                  Style="{StaticResource ExpandCollapseToggleStyle}"                  IsChecked="{Binding Path=IsExpanded,                              RelativeSource={RelativeSource TemplatedParent}}"                  ClickMode="Press"/>          <Border Name="Bd"              Grid.Column="1"              Background="{TemplateBinding Background}"              BorderBrush="{TemplateBinding BorderBrush}"              BorderThickness="{TemplateBinding BorderThickness}"              Padding="{TemplateBinding Padding}">            <ContentPresenter x:Name="PART_Header"                      ContentSource="Header"                      HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>          </Border>          <ItemsPresenter x:Name="ItemsHost"                  Grid.Row="1"                  Grid.Column="1"                  Grid.ColumnSpan="2"/>        </Grid>        <ControlTemplate.Triggers>          <Trigger Property="IsExpanded"               Value="false">            <Setter TargetName="ItemsHost"                Property="Visibility"                Value="Collapsed"/>          </Trigger>          <Trigger Property="HasItems"               Value="false">            <Setter TargetName="Expander"                Property="Visibility"                Value="Hidden"/>          </Trigger>          <MultiTrigger>            <MultiTrigger.Conditions>              <Condition Property="HasHeader"                     Value="false"/>              <Condition Property="Width"                     Value="Auto"/>            </MultiTrigger.Conditions>            <Setter TargetName="PART_Header"                Property="MinWidth"                Value="75"/>          </MultiTrigger>          <MultiTrigger>            <MultiTrigger.Conditions>              <Condition Property="HasHeader"                     Value="false"/>              <Condition Property="Height"                     Value="Auto"/>            </MultiTrigger.Conditions>            <Setter TargetName="PART_Header"                Property="MinHeight"                Value="19"/>          </MultiTrigger>          <Trigger Property="IsSelected"               Value="true">            <Setter TargetName="Bd"                Property="Background"                Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>            <Setter Property="Foreground"                Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>          </Trigger>          <MultiTrigger>            <MultiTrigger.Conditions>              <Condition Property="IsSelected"                     Value="true"/>              <Condition Property="IsSelectionActive"                     Value="false"/>            </MultiTrigger.Conditions>            <Setter TargetName="Bd"                Property="Background"                Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>            <Setter Property="Foreground"                Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>          </MultiTrigger>          <Trigger Property="IsEnabled"               Value="false">            <Setter Property="Foreground"                Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>          </Trigger>        </ControlTemplate.Triggers>      </ControlTemplate>    </Setter.Value>  </Setter></Style> 



[解决办法]
你想增加这个属性的话,直接在
<Border Name="Bd"
Grid.Column="1"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
这个Border里面加一句
Grid.ColumnSpan=2
就可以了。

热点排行