C# ListView IsSelected状态上的WPF Textwrapping触发器

C# ListView IsSelected状态上的WPF Textwrapping触发器,c#,wpf,xaml,listview,word-wrap,C#,Wpf,Xaml,Listview,Word Wrap,我正在制作一个具有listview的xaml应用程序。当文本很长时,我使用TextTriming来缩短它,但当用户单击该项时,我希望TextWrapping属性从nowrap更改为wrap。 以下是我到目前为止的情况: <Listview> <Listview.View> <GridView> <GridViewColumn Header="Name"> <GridViewColumn.CellTemplate>

我正在制作一个具有listview的xaml应用程序。当文本很长时,我使用TextTriming来缩短它,但当用户单击该项时,我希望TextWrapping属性从nowrap更改为wrap。 以下是我到目前为止的情况:

<Listview>
 <Listview.View>
   <GridView>
    <GridViewColumn Header="Name">
     <GridViewColumn.CellTemplate>
      <DataTemplate>
       <TextBlock x:Name="WordWrap" Text="{Binding Name}" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis"></TextBlock>
      </DataTemplate>
     </GridViewColumn.CellTemplate>
    </GridViewColumn>
 </Listview.View>
</Listview> 

我有一个单独的覆盖文件,其中包含样式,即设置其他控件模板触发器和数据触发器,下面是我在其中尝试的内容:

<Style.Triggers>
  <DataTrigger Binding="{Binding IsSelected, ElementName=WordWrap}" Value="True">
   <Setter Property="TextWrapping" Value="Wrap" />
  </DataTrigger>
 </Style.Triggers>
</Gridview>

我得到这个错误:成员“TextWrapping”无法识别或访问


请告诉我任何解决方案或修复方案!xaml和WPF仍然非常新。

在关闭数据模板之前关闭textblock标记后,请尝试在那里添加触发器代码,但将其更改为而不是样式。

textblock控件没有IsSelected属性,因此DataTrigger永远不会按原样发生。IsSelected是包含ListViewItem的属性,因此可以使用RelativeSource将触发器绑定更改为该属性。例如:

<TextBlock x:Name="WordWrap" Text="{Binding}" TextTrimming="CharacterEllipsis">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="TextWrapping" Value="NoWrap"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}}}" Value="True">
                    <Setter Property="TextWrapping" Value="Wrap"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>


此外,为了更改触发器中的属性,它不能在元素属性中硬编码,因此也可以将原始TextWrapping移动到样式中。

我刚刚尝试过,但仍然遇到相同的错误-无法识别或访问成员“TextWrapping”。还有一个新错误-在类型“Textblock”中找不到属性“IsSelected”。感谢您的帮助!