如何使用 gridview WPF 创建和绑定列表视图的控件模板

问题描述

我在 xaml 中有代码并尝试创建 controlTemplae

<ListView Name="seznamSkupin" Background="White" Grid.Row="1" Grid.Column="0" BorderBrush="#a9a9a9" BorderThickness="0,1,0" Padding="0,30">
            <ListView.ItemContainerStyle>
                <Style>
                     ...structure...
                </Style>
            </ListView.ItemContainerStyle>
            
            <ListView.View>
                <GridView ColumnHeaderContainerStyle="{StaticResource gridviewheader}">
                    <GridViewColumn displayMemberBinding="{Binding NazevSkupiny }"/>
                </GridView>
            </ListView.View>
        </ListView>

数据在代码后面

 List<Skupina> skupina = new List<Skupina>();
            string[] skupiny = {"Test","3.A","3.B"};
                 
            for (int i = 0; i < skupiny.Length; i++)
            {
                skupina.Add(new Skupina() { NazevSkupiny = skupiny[i]});
            }

            seznamSkupin.ItemsSource = skupina;

它在 xaml 中工作,但我需要为 listView 创建模板, - 我有两个 listViews 和 nedd 使用相同的样式。我正在使用单独的 style.xaml,尝试此操作,但未显示“seznamSkupin”的内容

<Style x:Key="dialogListView" targettype="{x:Type ListView}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate targettype="{x:Type ListView}">
                    <ListView Background="{StaticResource color3}" BorderThickness="0" Padding="0,30">
                        <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>

                        <ListView.ItemContainerStyle>
                            <Style targettype="{x:Type ListViewItem}">
                                <Setter Property="FontFamily" Value="{StaticResource fontFamilyDefault}" />
                                <Setter Property="FontSize" Value="{StaticResource fontSize3}" />
                                <Setter Property="Foreground" Value="{StaticResource color5 }" />
                                <Setter Property="Margin" Value="12,0"/>
                                <Setter Property="OverridesDefaultStyle" Value="true" />

                                <Setter Property="Template">
                                    <Setter.Value>
                                        <ControlTemplate targettype="{x:Type ListViewItem}">
                                            <Border CornerRadius="0" SnapsToDevicePixels="True"  
                                              BorderThickness="0,1"   
                                              BorderBrush="Black"   
                                              Background="{TemplateBinding Background}"
                                                
                                                >
                                                <Border x:Name="InnerBorder" CornerRadius="0" BorderThickness="0,3,3" BorderBrush="white" Padding="0,3" >


                                                    <Grid>
                                                        <GridViewRowPresenter VerticalAlignment="Center" HorizontalAlignment="Left" SnapsToDevicePixels="True" Content="{TemplateBinding Content}" Columns="{TemplateBinding GridView.ColumnCollection}" />
                                                    </Grid>

                                                </Border>
                                            </Border>
                                            <ControlTemplate.Triggers>
                                                <Trigger Property="IsFocused" Value="True">
                                                    <Setter Property="Background" Value="{StaticResource color1}" />
                                                    <Setter Property="Foreground" Value="{StaticResource color4}" />
                                                    <Setter Property="BorderBrush" Value="Transparent" />
                                                </Trigger>
                                            </ControlTemplate.Triggers>
                                        </ControlTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </ListView.ItemContainerStyle>
                    </ListView>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

我想,问题出在 GridViewRowPresenter 上,有人可以帮忙吗?谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)