C# ListView如何在codebehind中而不是在xaml中更改ItemsPanel

C# ListView如何在codebehind中而不是在xaml中更改ItemsPanel,c#,wpf,listview,code-behind,itemspaneltemplate,C#,Wpf,Listview,Code Behind,Itemspaneltemplate,我的xaml中有这个文件,它格式化了我的listView。这是可行的,但我必须添加一个复杂的逻辑模式,以便应用它 <ListView.ItemsPanel> <ItemsPanelTemplate> <WrapPanel Orientation = "Horizontal" Width = "250" Background = "{x:Null}" VerticalAlignment = "Top"></WrapPanel>

我的xaml中有这个文件,它格式化了我的listView。这是可行的,但我必须添加一个复杂的逻辑模式,以便应用它

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <WrapPanel Orientation = "Horizontal" Width = "250" Background = "{x:Null}"  VerticalAlignment = "Top"></WrapPanel>
    </ItemsPanelTemplate>
</ListView.ItemsPanel>

所以现在我需要在代码隐藏中应用上面的代码

---为Martino Bordin编辑---

请告诉我我误解了什么:

1a。我已在我的listview中定义了一种样式:

<ListView x:Name="lvPPtab1" Grid.Row="2" FontSize="12" Background="{x:Null}"  BorderBrush="Gainsboro" BorderThickness="5" Margin="10,12.2,10,8.4" VerticalAlignment="Stretch" PreviewMouseLeftButtonDown="ListBox_PreviewMouseLeftButtonDown" SelectionChanged="ListView_SelectionChanged">
    <ListView.Resources>
        <Style x:Key="ListViewStyle" TargetType="ListView">
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate >
                        <WrapPanel Orientation="Horizontal" VerticalAlignment="Top"/>
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.Resources>

    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="Blue"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

2a.我只在需要时才在代码中设置它:

<ListView x:Name="lvPPtab1" Grid.Row="2" FontSize="12" Background="{x:Null}"  BorderBrush="Gainsboro" BorderThickness="5" Margin="10,12.2,10,8.4" VerticalAlignment="Stretch" PreviewMouseLeftButtonDown="ListBox_PreviewMouseLeftButtonDown" SelectionChanged="ListView_SelectionChanged">
    <ListView.Resources>
        <Style x:Key="ListViewStyle" TargetType="ListView">
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate >
                        <WrapPanel Orientation="Horizontal" VerticalAlignment="Top"/>
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.Resources>

    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="Blue"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>


lvPPtab1.Style = (Style)this.Resources["ListViewStyle"];

lvPPtab1.Style=(Style)this.Resources[“ListViewStyle”];
我所看到的只是。。。没有任何列表视图为空

然后我试着坚持你说的话,所以我做到了:

1b。在xaml中

<ListView x:Name="lvPPtab1" Grid.Row="2" FontSize="12" Background="{x:Null}"  BorderBrush="Gainsboro" BorderThickness="5" Margin="10,12.2,10,8.4" VerticalAlignment="Stretch" PreviewMouseLeftButtonDown="ListBox_PreviewMouseLeftButtonDown" SelectionChanged="ListView_SelectionChanged">
<ListView.Resources>
    <ItemsPanelTemplate x:Key="ListViewStyle" >
        <WrapPanel Orientation="Horizontal" VerticalAlignment="Top"></WrapPanel>
    </ItemsPanelTemplate>
</ListView.Resources>
<ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="Blue"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>
</ListView>

  • 在代码隐藏中:

    lvPPtab1.ItemsPanel=(ItemsPanelTemplate)this.Resources[“ListViewStyle”]


  • 但还是没什么!全部为空我错在哪里了????

    将模板放入资源字典中,为listview指定一个x:Name,然后您可以在代码隐藏中访问其属性:

    myListView.ItemsPanel
    myListView.ItemsPanel = (ItemsPanelTemplate)this.Resources["MyListViewPanelTemplate"];
    

    什么代码?什么逻辑?你能告诉我们你想实现什么吗?你可以在我前面的问题中找到一切:我过去试过,但运气不好。谢谢你的回答,但这不是我要问的。我可能不太清楚。好的,我的ListView.Items面板,然后是其他的???我不是那个投票否决你的人。尽管如此,你的解决方案看起来很有趣。但是如何将我上面放的代码从特殊的listview部分转移到参考资料中呢?换句话说,如何使其通用?检查此链接我看不到填充列表视图的代码代码代码在任何情况下都不重要我有两种情况:(a)。“带有图标的资源管理器”,在本例中,我用文本框和图像填充它。(b) 。“类似网格”的文本框。您可以用“AAAA”或“BBBB”填充它。我更进一步,并把它放在窗口资源和它的工作!!!!!!万分感谢!!!!我们快到了。只有两个额外的问题:1。在案例(b)中,我必须移除项目面板和。我试图将其设置为null,但没有成功。2.如果(a)我无法设置项目宽度。塔克斯