我是靠谱客的博主 迅速凉面,最近开发中收集的这篇文章主要介绍wpf自定义绑定数据,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 自定义绑定数据,通过Binding Path进行绑定

1、ItemsSource="{Binding SelFloorData}"(在datagrid中绑定数据)

2、Binding="{Binding FloorName}(绑定具体的数据成员)

3、解决checkbox中需要点击两次才能选中,重写DataGridTemplateColumn

4、列头和内容居中

<DataGrid x:Name="dataGrid" Margin="10,0" 
                  RowHeaderWidth="0" HorizontalContentAlignment="Center" IsSynchronizedWithCurrentItem="True" 
                  ItemsSource="{Binding SelFloorData}" CanUserAddRows="False" AutoGenerateColumns="False" Height="321" VerticalAlignment="Top"
                  >

            <!--为了解决CheckBox选中两次才可改变状态-->
            <DataGrid.Columns>
                <!--相关属性不能放到CheckBox那一行,否则影响居中等-->
                <DataGridTemplateColumn Header="选择" CanUserResize="False" Width="40" >
                    <!--列头居中-->
                    <DataGridTemplateColumn.HeaderStyle>
                        <Style TargetType="DataGridColumnHeader">
                            <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
                        </Style>
                    </DataGridTemplateColumn.HeaderStyle>
                    <!--内容居中-->
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <!--绑定数据:双向绑定,数据和界面双向关联-->
                            <CheckBox Name="SelCheckBox" HorizontalAlignment="Center" IsChecked="{Binding Path=SelCurFloor,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

                <DataGridTemplateColumn Header="楼层" Width="80" CanUserResize="False">
                    <!--列头居中-->
                    <DataGridTemplateColumn.HeaderStyle>
                        <Style TargetType="DataGridColumnHeader">
                            <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
                        </Style>
                    </DataGridTemplateColumn.HeaderStyle>
                    <!--内容居中-->
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock HorizontalAlignment="Center" Text="{Binding Path=FloorName, Mode=TwoWay}"></TextBlock>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

                <DataGridTemplateColumn Header="标高" Width="*">
                    <DataGridTemplateColumn.HeaderStyle>
                        <Style TargetType="DataGridColumnHeader">
                            <Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
                        </Style>
                    </DataGridTemplateColumn.HeaderStyle>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock HorizontalAlignment="Center" Text="{Binding Path=FloorLevel,Mode=TwoWay}"></TextBlock>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>
public class SelFloorData : INotifyPropertyChanged
    {

        public event PropertyChangedEventHandler PropertyChanged;

        /// <summary>
        /// 是否选择
        /// </summary>
        private bool m_bSelCurFloor;
        public bool SelCurFloor
        {
            get { return m_bSelCurFloor; }
            set { m_bSelCurFloor = value; if (this.PropertyChanged != null) { this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("SelCurFloor")); } }
        }


        /// <summary>
        /// 楼层名称
        /// </summary>
        private string m_strFloorName;
        public string FloorName
        {
            get { return m_strFloorName; }
            set { m_strFloorName = value; if (this.PropertyChanged != null) { this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("FloorName")); } }
        }


        /// <summary>
        /// 楼层标高
        /// </summary>
        public string m_strFloorLevel;
        public string FloorLevel
        {
            get { return m_strFloorLevel; }
            set { m_strFloorLevel = value; if (this.PropertyChanged != null) { this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("FloorLevel")); } }

        }

    }

 

最后

以上就是迅速凉面为你收集整理的wpf自定义绑定数据的全部内容,希望文章能够帮你解决wpf自定义绑定数据所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部