Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改树视图的切换_C#_Wpf_Treeview - Fatal编程技术网

C# 如何更改树视图的切换

C# 如何更改树视图的切换,c#,wpf,treeview,C#,Wpf,Treeview,我有一个树视图工作,它有一个切换按钮,可以扩大它的内容。当我这样做时,由于切换扩展宽度,每列都离我想要的位置太远。我想覆盖这种行为,但我不知道如何覆盖,我知道这与定义TreeView的控件模板有关 这是我的密码 c# Class MyList { double someDouble; double somestring; souble anotherString; bool thisOnesABool; } Class MyContainer { st

我有一个树视图工作,它有一个切换按钮,可以扩大它的内容。当我这样做时,由于切换扩展宽度,每列都离我想要的位置太远。我想覆盖这种行为,但我不知道如何覆盖,我知道这与定义TreeView的控件模板有关

这是我的密码

c#

Class MyList
{
    double someDouble;
    double somestring;
    souble anotherString;
    bool thisOnesABool;
}

Class MyContainer
{
    string headerText1;
    string headerText2;

    List<MyList> SomeList;
}

List<MyContainer> SomeContainerInCodeBehind = new List<MyContainer>();

WPF

<UserControl.Resources>
    <DataTemplate x:Key="level2">
        <Grid>
            //the content of 'MyList'
        </Grid>
    </DataTemplate>

    <HierarchicalDataTemplate x:Key="level1"
                              ItemsSource="{Binding SomeListWithinContainer}"
                              ItemTemplate="{StaticResource level2}">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="100"/>
                <ColumnDefinition Width="100"/>
            </Grid.ColumnDefinitions>
            <TextBox Grid.Column="0" Text="{Binding HeaderText}" />
            <TextBox Grid.Column="1" Text="{Binding MoreHeaderText}" />
        </Grid>
    </HierarchicalDataTemplate>
</UserControl.Resources>

<Grid>
    <TreeView Name="TheTreeView"
              Grid.Row="1"
              ItemTemplate="{StaticResource level1}"
              ItemsSource="{Binding SomeContainerInCodeBehind}">
    </TreeView>
</Grid>
c#
类MyList
{
双倍;
双字符串;
解另一根弦;
bool thisOnesABool;
}
类霉菌容器
{
线头TEXT1;
线头TEXT2;
列出一些清单;
}
List SomeContainerCodeBehind=新列表();
WPF
//“MyList”的内容

要更改扩展器(或展开的子项)的位置,您必须覆盖
树视图项的
控制模板

以下
样式
取自并缩短,以显示相关代码。访问链接以获取完整代码

<Style x:Key="{x:Type TreeViewItem}"
       TargetType="{x:Type TreeViewItem}">
  <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>
          <VisualStateManager.VisualStateGroups>
            ...
          </VisualStateManager.VisualStateGroups>

          <!-- Use Margin to modify the position of the "Expander" ToggleButton -->
          <ToggleButton x:Name="Expander"
                        Style="{StaticResource ExpandCollapseToggleStyle}"
                        ClickMode="Press"
                        IsChecked="{Binding IsExpanded, 
            RelativeSource={RelativeSource TemplatedParent}}"/>

          <Border x:Name="Bd"
                  Grid.Column="1"
                  Background="{TemplateBinding Background}"
                  BorderBrush="{TemplateBinding BorderBrush}"
                  BorderThickness="{TemplateBinding BorderThickness}"
                  Padding="{TemplateBinding Padding}">

            <!-- Modify e.g. Margin to  change the position of the Header (parent item) -->
            <ContentPresenter x:Name="PART_Header"
                              ContentSource="Header"
                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
          </Border>

          <!-- Modify e.g. using Margin to reposition the expanded child items -->
          <ItemsPresenter x:Name="ItemsHost"
                          Grid.Row="1"
                          Grid.Column="1"
                          Grid.ColumnSpan="2"
                          Visibility="Collapsed" />
        </Grid>

         ...


      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

...
...

要更改扩展器(或展开的子项)的位置,您必须覆盖
树视图项的
控制模板

以下
样式
取自并缩短,以显示相关代码。访问链接以获取完整代码

<Style x:Key="{x:Type TreeViewItem}"
       TargetType="{x:Type TreeViewItem}">
  <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>
          <VisualStateManager.VisualStateGroups>
            ...
          </VisualStateManager.VisualStateGroups>

          <!-- Use Margin to modify the position of the "Expander" ToggleButton -->
          <ToggleButton x:Name="Expander"
                        Style="{StaticResource ExpandCollapseToggleStyle}"
                        ClickMode="Press"
                        IsChecked="{Binding IsExpanded, 
            RelativeSource={RelativeSource TemplatedParent}}"/>

          <Border x:Name="Bd"
                  Grid.Column="1"
                  Background="{TemplateBinding Background}"
                  BorderBrush="{TemplateBinding BorderBrush}"
                  BorderThickness="{TemplateBinding BorderThickness}"
                  Padding="{TemplateBinding Padding}">

            <!-- Modify e.g. Margin to  change the position of the Header (parent item) -->
            <ContentPresenter x:Name="PART_Header"
                              ContentSource="Header"
                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
          </Border>

          <!-- Modify e.g. using Margin to reposition the expanded child items -->
          <ItemsPresenter x:Name="ItemsHost"
                          Grid.Row="1"
                          Grid.Column="1"
                          Grid.ColumnSpan="2"
                          Visibility="Collapsed" />
        </Grid>

         ...


      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

...
...

您至少可以添加一个屏幕截图吗?“每一列都离我想要的地方太远了”-“太远”和“我想要的地方”是100%的主观性。列的位置不重要,我设置它的能力很重要。我只是想知道如何定义扩展器的行为。我不明白你想实现什么。你能至少添加一个屏幕截图吗?“每一列都离我想要的地方太远了”-“太远”和“我想要的地方”是100%的主观性。列的位置不重要,我设置它的能力很重要。我只想知道如何定义扩展器的行为。我不明白您试图实现什么“修改,例如使用边距重新定位扩展的子项”正是我所寻找的,谢谢。修改,例如使用边距重新定位扩展的子项“正是我所寻找的,谢谢。