wpf listview问题。给listview的每一行都加个button,button绑定该行。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf listview问题。给listview的每一行都加个button,button绑定该行。相关的知识,希望对你有一定的参考价值。

给listview的每一行都加个button,在不选中此行,点击button时,button的对象是空的,怎么给button绑定此行对象?

1.我们可以用数据模版实现添加按钮

<ListView x:Name="Liv">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Index" DisplayMemberBinding="Binding Path=Index" />
            <GridViewColumn Header="Name" DisplayMemberBinding="Binding Path=Name" />
            <GridViewColumn Header="Info">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <Button Width="30" Content="..." Click="BtnInfo_Click" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>


2.可以用 BindingList<Player(这个是您要绑定的对象)> (可自己选择其它集合)集合做为数据源绑定数据

Liv.ItemsSource = _list;


3.点击按钮时 通过按钮的 DataContent 获取绑定的对象

private void BtnInfo_Click(object sender, RoutedEventArgs e)

    var btn = sender as Button;
    var player = btn.DataContext as Player;

参考技术A 你是想触发点击时间吗setonitemclicklistener 参考技术B 你是说给listview的button设置监听?

WPF ListView 居中显示

原文:WPF ListView 居中显示

今天遇到的问题:


方法1:设置GridViewColumn的ActualWidth

 <ListView >
            <ListView.View>
                <GridView >
                    <GridViewColumn Header="名称"   Width="200" x:Name="column">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Name}" TextAlignment="Center" MinWidth="{Binding Path=ActualWidth,ElementName=column}"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="接收"  Width="120" x:Name="sss">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Border  MinWidth="{Binding Path=ActualWidth,ElementName=sss}">
                                    <CheckBox IsChecked="{Binding IsReceive}" HorizontalAlignment="Center"/>
                                </Border>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>

注意修改CheckBox居中的时候,需要把他套在Border里,直接写在CheckBox上话没效果。



方法2:设置Style,推荐。

        <Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
再修改需要居中的控件HorizontalAlignment=“Center”

<ListView ItemContainerStyle="{DynamicResource ListViewItemStyle}">
            <ListView.View>
                <GridView >
                    <GridViewColumn Header="名称"   Width="200">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Name}"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="接收"  Width="120">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox IsChecked="{Binding IsReceive}" HorizontalAlignment="Center"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="拒绝"  Width="120" >
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox IsChecked="{Binding IsRefuse}" HorizontalAlignment="Center"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>







以上是关于wpf listview问题。给listview的每一行都加个button,button绑定该行。的主要内容,如果未能解决你的问题,请参考以下文章

winform中ListView绑定问题

c# WPF listview的一列里面放着combobox 我在后台给combobox加了几个item,现在不显示。

WPF的ListView控件自定义布局用法实例

WPF c# 界面上有3个radiobutton和3个listview 选择不同的radiobutton出现不同的listview

WPF:如何在拖动 ListView 项目时允许在 ListView 中使用鼠标滚轮滚动?

如何将listView的selectedItem值传递到wpf MVVM中的另一页