Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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# 当我选择一个新的treeviewitem时,WPF Items控件重置被选择为false_C#_Wpf_Binding - Fatal编程技术网

C# 当我选择一个新的treeviewitem时,WPF Items控件重置被选择为false

C# 当我选择一个新的treeviewitem时,WPF Items控件重置被选择为false,c#,wpf,binding,C#,Wpf,Binding,我扩展了ItemsControl以允许MultiSelection 我将数据OneWayToSource绑定到viewmodel <Rectangle x:Name="Rectangle" Fill="Transparent" Stroke="Black" StrokeDashCap="Square" StrokeThickness="0" SnapsToDevic

我扩展了
ItemsControl
以允许
MultiSelection

我将数据
OneWayToSource
绑定到viewmodel

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>
根据鼠标事件,所有容器的
IsSelected
属性都设置为true

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>
我看到数据从容器传播到viewmodel,并且
IsSelected
更新。 当我单步执行代码时,在
PropertyChanged
上完成后,它会立即执行 再次运行setter,将属性设置回false。我对正在发生的事感到很困惑。在将属性重置回false之前,它将逐步执行此非用户代码

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>
单步执行:单步执行非用户代码“System.ComponentModel.PropertyChangedEventArgs.PropertyChangedEventArgs”
单步执行:单步执行非用户代码“MS.Internal.Data.PropertyPathWorker.GetValue”
单步执行:单步执行非用户代码“MS.Internal.Data.PropertyPathWorker.RawValue”
单步执行:单步执行非用户代码“MS.Internal.Data.PropertyPathWorker.RawValue”
单步执行:单步执行非用户代码“MS.Internal.Data.ClrBindingWorker.RawValue”
单步执行:单步执行非用户代码“System.Windows.Data.BindingExpression.TransferValue”

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>
我发誓我从来都不记得在这篇帖子里说什么。我正在扩展items控件以生成一个多选树视图。事实上,我大部分时间只是使用别人的代码,并对其进行了修改以允许键盘导航

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>

5.

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>

无论如何,我最终会弄明白的。我想我记得默认的wpf树视图不允许multiselect,如果您试图在多个树视图项上设置isselected,那么实际上取消选择所有项,所以我想知道itemscontrol是否有这种行为,即使通用itemscontrol干扰选择是没有意义的。不确定发生了什么,但我最终会弄清楚。
项目控件不允许任何设计选择,因此我不知道当
项目控件
选择项目时,
IsSelected
被更改是什么意思。那东西一点也选不上

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>
此外,如果需要多选行为,可以使用
ListBox
并将
SelectionMode
更改为
多个
扩展

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>
请查看此链接:

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>

终于找到了。只是一个愚蠢的地方,我又错了一套装订。交互绑定会导致奇怪的行为。最有可能的是一个更新触发了一个循环,再次关闭它

        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>

对不起,我把这么多人的时间浪费在愚蠢的问题上了。但通常我只是想确认事情是按照我认为的方式进行的。当我的代码不起作用时,我对任何东西都没有信心

出于好奇,您是否尝试更改
=零件?我也很好奇;你能发布你的
IsSelected
绑定吗?
        <Rectangle
                   x:Name="Rectangle" Fill="Transparent" Stroke="Black" 
                                   StrokeDashCap="Square" StrokeThickness="0" SnapsToDevicePixels="True">
          <Rectangle.StrokeDashArray>
            <sys:Double>5</sys:Double>
          </Rectangle.StrokeDashArray>
        </Rectangle>
        <Border Name="Bd"
                  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>
      <ControlTemplate.Triggers>
        <Trigger Property="IsExpanded" Value="false">
          <Setter TargetName="ItemsHost"
                    Property="Visibility"
                    Value="Collapsed"
                    />
        </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="ItemMainGrid"
                    Property="Background"
                    Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
        </Trigger>
        <MultiTrigger>
          <MultiTrigger.Conditions>
            <Condition Property="IsOutlined"
                       Value="true" 
                       />
            <Condition Property="IsSelected"
                       Value="false" 
                       />
          </MultiTrigger.Conditions>
         <Setter TargetName="Rectangle" Property="StrokeThickness" Value="1" />
        </MultiTrigger>        
        <Trigger Property="IsOutlined"
                   Value="false">
          <Setter TargetName="Rectangle" Property="StrokeThickness" Value="0" />
        </Trigger>
        <Trigger Property="IsEnabled"
                   Value="false">
          <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
        </Trigger>
      </ControlTemplate.Triggers>
    </ControlTemplate>
  </Setter.Value>
</Setter>