wpf - ListViewItem 自定义模板 : ContentPresenter stays empty

标签 wpf xaml templates listviewitem contentpresenter

我的代码中有以下 ListView。 views:GameCard是自定义UserControl{Binding}是有效的 DataContext三个项目的对象。没有自定义 ItemContainerStyle一切正常 — 列表显示三个 GameCards有正确的信息等。只要我添加 ItemContainerStyle部分,我只得到三个“ABCD”;所以数据仍然正确加载,但我的 UserControl不再显示(我只添加了“ABCD”来检查数据是否存在,否则我只得到空框)。

我可以在网上找到的每条信息似乎都表明只需放置 ContentPresenter模板中的元素应该可以工作,但在这种情况下似乎不行。我错过了什么?

<ListView Grid.Row="1" ItemsSource="{Binding}" BorderThickness="0,0,1,0"
              ScrollViewer.HorizontalScrollBarVisibility="Disabled">
    <ListView.Background>
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
            <GradientStop Color="#FF614B4B" Offset="0"/>
            <GradientStop Color="#FFDA7070" Offset="1"/>
        </LinearGradientBrush>
    </ListView.Background>
  <ListView.ItemsPanel>
    <ItemsPanelTemplate>
      <WrapPanel />
    </ItemsPanelTemplate>
  </ListView.ItemsPanel>
  <ListView.ItemTemplate>
    <DataTemplate>
      <views:GameCard />
    </DataTemplate>
  </ListView.ItemTemplate>
  <ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate>
            <Grid>
              <TextBlock Text="ABCD" />
              <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
            </Grid>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </ListView.ItemContainerStyle>
</ListView>

最佳答案

您可能不是这种情况,但到目前为止,我还没有修改 ItemContainerStyle,只需修改 ListView.View。由于您将 Grid 放入模板样式中,因此我假设您正在寻找 GridView ,这就是您这样做的方式:

<ListView.View>
    <GridView>
        <GridViewColumn Width="120">
            <GridViewColumnHeader Height="14" >
                <TextBlock Text="Type" FontSize="9"/>
            </GridViewColumnHeader>
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock  Text="{Binding Path=Name, FallbackValue=MISSING}" /> 
    <!-- or content presenter with bindings here -->
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
...

关于wpf - ListViewItem 自定义模板 : ContentPresenter stays empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14323231/

相关文章:

c# - WPF DataGrid 分组与总和和其他字段

c# - 对 WinRT 中的依赖属性进行分类

c++ - 有没有更好的方法来编写这个模板?

c# - 如何在 MVVM 中使用 ApplicationCommand

wpf - 将文本插入 WPF 文本框中的插入符号位置

c# - 如何使标签静态化

wpf - 从数据模板设置父控件的属性

c# - 如何从 C#/WPF 项目调用 C++ DLL

c++ - 在模板中使用模板别名而不是模板

c++ - 检查可变参数模板声明中的参数类型