C# Wpf 如何使用其中的按钮更改 Listviewitem 的高度?

Posted

技术标签:

【中文标题】C# Wpf 如何使用其中的按钮更改 Listviewitem 的高度?【英文标题】:C# Wpf How to Change Listviewitem's Height Using a Button in it? 【发布时间】:2014-12-09 23:11:43 【问题描述】:

我的列表视图项目中包含 1 个按钮。 Listview 项的默认高度为 60。

当我单击 listview 项目的按钮时,该行(包含单击的按钮)的高度应更改为 100。当我再次单击该按钮时,行的高度应更改回 60。

我真的不知道如何实现这个。

当我单击 Row1 的详细信息按钮时,Row1 的高度应更改为 100。如果我再次单击它,它的高度应更改回 60。

我正在向这样的列表视图项目添加按钮:

                 <GridViewColumn >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <Grid>                                  
                               <ButtonName="DetailsButton"Content="Details"FontWeight="Bold"  HorizontalAlignment="Left" Margin="520,35,0,0" VerticalAlignment="Top" Width="75" Height="25">
                               </Button>
                            </Grid>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

【问题讨论】:

应该使用ToggleButton,然后你可以在togglebutton的Checked状态改变时切换行高(通过绑定) 如何填充列表视图?您是使用数据绑定(将 ListView 的 ItemsSource 绑定到数据源),还是在 for 循环中一一添加行? 我正在使用数据绑定来填充 Listview。 【参考方案1】:

你可以使用 DataTemplate Triggers 来达到同样的效果

样本

<GridViewColumn>
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <Grid>
                <ToggleButton Name="DetailsButton"
                              Content="Details"
                              FontWeight="Bold"
                              HorizontalAlignment="Left"
                              Margin="520,35,0,0"
                              VerticalAlignment="Top"
                              Width="75"
                              Height="25">
                </ToggleButton>
            </Grid>
            <DataTemplate.Triggers>
                <Trigger SourceName="DetailsButton"
                         Property="IsChecked"
                         Value="true">
                    <Setter Property="Height"
                            Value="100" />
                </Trigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

我已将Button 更改为ToggleButton,因此它可以有两种状态并且还可以显示清晰的指示。

在触发器中,当检查按钮时,我已将高度设置为100。一旦条件变为假,它将被恢复

看看这是不是你要找的。​​p>

【讨论】:

比我的方法更好,纯 XAML。

以上是关于C# Wpf 如何使用其中的按钮更改 Listviewitem 的高度?的主要内容,如果未能解决你的问题,请参考以下文章

.NET WPF (C#) 我无法从另一个线程获取更改背景的按钮

c#编程wpf按钮边框带有白边!

wpf里如何动态改变一个按钮模板里边的静态资源

以编程方式使用 C# 更改网格面板边框颜色 - WPF

在 WPF C# 中使用 NAudio 录制音频

C#:Caliburn Micro:如何使用数据绑定控制 WPF 按钮的属性?