覆盖ListViewItem在ListView中收缩了我的所有项目



所以我有一个要应用于项目上的listViewItem样式(我只想禁用ListBoxItems上的残疾颜色触发器,因为它很丑陋,直到/当我找到新颜色时我更喜欢。

              <Setter Property="Template">
                  <Setter.Value>
                    <ControlTemplate TargetType="ListViewItem">
                      <Border 
                        Name="Border"
                        Padding="2"
                        SnapsToDevicePixels="true"
                        Background="Transparent"
                        >
                        <GridViewRowPresenter
                          Content="{TemplateBinding Content}"
                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                          />
                      </Border>
                      <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="true">
                          <Setter TargetName="Border"
                                  Property="Background" Value="{x:Static SystemColors.HighlightBrush}"
                                  />
                        </Trigger>
                      </ControlTemplate.Triggers>
                    </ControlTemplate>
                  </Setter.Value>
                </Setter>

但是,将此模板添加到listView时,这些项目都会收缩。最初,他们从此绑定(我认为)中获取项目大小:height = {banding elementName = graph_viewer,path = graphHeight,mode = oneway}。但是,除非GridViewPresenter正在做一些奇怪的事情,否则我看不出任何理由添加ItemContainer样式会破坏这种绑定。

       <HierarchicalDataTemplate 
            ItemsSource ="{Binding Path = bits}"
            DataType="{x:Type ViewModels:BusViewModel}"
            >
              <Components:CenteredTextBlock
                x:Name="CommentTextBlock"
                BorderBrush="{Binding RelativeSource ={RelativeSource AncestorType={x:Type ListView}}, Path=BorderBrush}"
                HorizontalAlignment="Stretch"
                Height="{Binding ElementName=graph_viewer, Path=GraphHeight, Mode=OneWay}"
                >
                <Components:CenteredTextBlock.MainText>
                  <MultiBinding Converter="{StaticResource StringConcatConverter}">
                    <Binding Path="Alias" />
                    <Binding Path="SignalValueAtPrimaryMarker" />
                  </MultiBinding>
                </Components:CenteredTextBlock.MainText>
              </Components:CenteredTextBlock>
            </HierarchicalDataTemplate>

CenteredTextBlock只是一个中心的文本块(想要保存必须输入网格并重复写入对准=中心)。

<Grid>
  <TextBlock 
    VerticalAlignment="Center"
    HorizontalAlignment="Center"
    Foreground="{Binding RelativeSource = {RelativeSource FindAncestor, AncestorType={x:Type Components:CenteredTextBlock}}, Path=Foreground}" 
    Text="{Binding RelativeSource = {RelativeSource FindAncestor, AncestorType={x:Type Components:CenteredTextBlock}}, Path=MainText}" 
    />
</Grid>

ListViewItem的默认模板具有 ContentPresenter而不是 GridViewRowPresenter

如果您只想禁用选择触发并希望您的刷子在那儿,所以我建议只有一组触发器才能使用默认的ControlTemplate。

默认模板与您的触发器一样:

<ControlTemplate
    TargetType="ListViewItem">
    <Border
        BorderThickness="{TemplateBinding Border.BorderThickness}"
        Padding="{TemplateBinding Control.Padding}"
        BorderBrush="{TemplateBinding Border.BorderBrush}"
        Background="{TemplateBinding Panel.Background}"
        Name="Bd"
        SnapsToDevicePixels="True">
        <ContentPresenter
           Content="{TemplateBinding ContentControl.Content}"
           ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
           ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}"
           HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
           VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"
           SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"/>
    </Border>
    <ControlTemplate.Triggers>
       <Trigger Property="IsSelected" Value="true">
           <Setter TargetName="Bd"
                   Property="Background"
                   Value="{x:Static SystemColors.HighlightBrush}"/>
       </Trigger>
     </ControlTemplate.Triggers>
 </ControlTemplate>

最新更新