概述
自定义绑定数据,通过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自定义绑定数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复