WPF之让ListView中的CheckBox居中显示

第一步:在资源中定义一个居中的样式:

   <Window.Resources>
        <Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </Window.Resources>

第二步:把ListView中的样式绑定成这个样式:

   <ListView x:Name="lv"  ItemContainerStyle="{StaticResource ResourceKey=ListViewItemStyle}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="序号">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Margin="5" Text="{Binding Path=SeqNo}" TextWrapping="Wrap"  FontSize="14" HorizontalAlignment="Center"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Header="商品名称">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Margin="5" Text="{Binding Path=GoodsName}" TextWrapping="Wrap"  FontSize="14" HorizontalAlignment="Center"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Header="操作" Width="100">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox   IsChecked="{Binding Path=Cnk}" IsThreeState= "true" HorizontalAlignment="Center"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
               </GridView>
            </ListView.View>
        </ListView>

注意:把CheckBox的HorizontalAlignment属性设置为HorizontalAlignment="Center";

运行效果图:

demo程序完整代码如下:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow">
    <Window.Resources>
        <Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </Window.Resources>
    <Grid>
        <ListView x:Name="lv"  ItemContainerStyle="{StaticResource ResourceKey=ListViewItemStyle}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="序号">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Margin="5" Text="{Binding Path=SeqNo}" TextWrapping="Wrap"  FontSize="14" HorizontalAlignment="Center"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Header="商品名称">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Margin="5" Text="{Binding Path=GoodsName}" TextWrapping="Wrap"  FontSize="14" HorizontalAlignment="Center"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Header="操作" Width="100">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox   IsChecked="{Binding Path=Cnk}" IsThreeState= "true" HorizontalAlignment="Center"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
               </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>

C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;

namespace WpfApplication1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        private ObservableCollection<Goods> _goodsList;

        public ObservableCollection<Goods> GoodsList
        {
            get
            {
                if (_goodsList == null)
                {
                    _goodsList = new ObservableCollection<Goods>();
                }
                return _goodsList;
            }
        }

        public MainWindow()
        {
            InitializeComponent();
            List<Goods> list = new List<Goods>
            {
                new Goods{SeqNo=1,GoodsName="苹果",Cnk=true},
                new Goods{SeqNo=2,GoodsName="橘子",Cnk=false},
                new Goods{SeqNo=3,GoodsName="香蕉",Cnk=false},
                new Goods{SeqNo=4,GoodsName="葡萄",Cnk=true},
                new Goods{SeqNo=5,GoodsName="哈密瓜",Cnk=true},
            };
            GoodsList.Clear();
            foreach (Goods item in list)
            {
                GoodsList.Add(item);
            }
            lv.ItemsSource = GoodsList;
        }
    }
    public class Goods
    {
        private int _seqNo;

        public int SeqNo
        {
            get { return _seqNo; }
            set { _seqNo = value; }
        }

        private string _goodsName;

        public string GoodsName
        {
            get { return _goodsName; }
            set { _goodsName = value; }
        }

        private bool _cnk;

        public bool Cnk
        {
            get { return _cnk; }
            set { _cnk = value; }
        }

    }
}

时间: 2024-11-06 17:49:00

WPF之让ListView中的CheckBox居中显示的相关文章

用WPF实现在ListView中的鼠标悬停Tooltip显示

原文:用WPF实现在ListView中的鼠标悬停Tooltip显示 一.具体需求描述 在WPF下实现,当鼠标悬停在ListView中的某一元素的时候能弹出一个ToolTip以显示需要的信息. 二.代码实现 在.XMAL文件中 Code<Window.Resources> <DataTemplate x:Key="dataTemplateCheckBox"> <StackPanel Orientation="Horizontal">

设置div中的div居中显示

设置div中的div居中显示 方法一. <div class='big'> <div class='small'>box1</div> </div> style样式: .big{ height:200px; width:200px; border:black solid 1px; position:absolute; left:150px; } .small{ height:100px; width:100px; background-color:green

Android ListView 中加入CheckBox/RadioButton 选择状态保持、全选

最近在一个项目中,需要在ListView的item中加入CheckBox,但是遇到的一个问题是上下滑动的时候如果有选择了的CheckBox,就会出现选择项错误的问题,下面将个人的解决方法总结如下; 先说思路: 在ListView的Adapter中,用一个Map保存每一项item的选择状态,在getView方法中,设置Map中保存的某一项的选择状态就实现了状态的保存: 每一项的视图 child.xml <CheckBox        android:id="@+id/item_cb&quo

Android listview中使用checkbox

最近比较忙碌,我也不知道忙的什么东西,打算写的博客写了一半,还没写完,今天先扯一扯项目中遇到的一个问题,一方面防止以后遇到这个问题忘记如何解决,另一方面希望可以提供给遇到同样问题的朋友一个思路.下面开始正题,在listview的item中使用checkbox,当你按照普通的listview的用法使用时,你会遇到下面这样的问题:1.checkbox可以点击,但是listview的item无法点击2.无法获得checkbox被点击的是哪一行第一个问题涉及到事件分发,下一篇再扯(我会按照我的理解,通俗

如何在Android的ListView中构建CheckBox和RadioButton列表(Android版支持单选和多选的投票项目)

引言 我们在android的APP开发中有时候会碰到提供一个选项列表供用户选择的需求,如在投票类型的项目中,我们提供一些主题给用户选择,每个主题有若干选项,用户对这些主题的选项进行选择,然后提交. 本文以一个支持单选和多选投票项目为例,演示了在一个ListView中如何构建CheckBox列表和RadioButton列表,并分析了实现的原理和思路,提供有需要的朋友参考. 项目的演示效果如下. 数据源 通常我们的数据源来自于数据库.首先,我们构建投票项目类SubjectItem. /** * 主题

WPF listView中【checkbox】实现全选功能

List<xxx> nn = new List<xxx>(); public MainWindow() { InitializeComponent(); for (int i = 0; i < 10; i++) { nn.Add(new xxx { name = "nihaohao" + i, bol = false }); } listview.ItemsSource = nn; } // public bool bb { get; set; } pri

listview中的checkbox实现全选、反选、删除的功能

1.布局实现的效果 2.找到该布局文件下的所在的activity,实现的效果 package com.bwie.checkbox_all; import java.util.ArrayList; import java.util.Iterator; import com.bwie.adapter.MyAdapter; import com.bwie.vo.User; import android.os.Bundle; import android.app.Activity; import and

asp.net前台ListView中判断CheckBox选中状态

<asp:CheckBox ID="CheckBox1" runat="server" Text="作废" Checked='<%#Eval("pl_Cancel")!=null ? false : true %>' /> //利用三元运算,这条的主要作用判断绑定数据不为空<%#Eval("pl_Cancel")!=null ? false : true %>

ListView中添加ScrollView只显示一两行的问题

将ListView改为继承NoScrollListView package com.example.brtz.widget; import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; /*** * 自定义ListView子类,继承ListView * @author Administrator * */ public class NoScrollListVie