前台
csharp
<DataGrid
AutoGenerateColumns="False"
Background="White"
CanUserAddRows="True"
Grid.Row="1"
RowEditEnding="DataGrid_OnRowEditEnding"
RowHeight="60"
SelectionUnit="CellOrRowHeader"
x:Name="DataGrid">
<!-- Mode=TwoWay, UpdateSourceTrigger=PropertyChanged 这两个设置很重要,没有的话无法实现双向绑定-->
<DataGrid.Columns>
<DataGridTextColumn
Binding="{Binding ZhuJieNeiRong, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Header="注解内容"
Width="*">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
<!-- -->
<!-- 这里的功能是 如果设定了行高,加上这个样式 编辑表格时 内容是一直垂直居中-->
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
后台
csharp
public static ObservableCollection<Zjwz> _gridZhuJieList = new ObservableCollection<Zjwz>();
private void win_OnLoaded(object sender, RoutedEventArgs e)
{
DataGrid.ItemsSource = _gridZhuJieList;
}
数据对象
csharp
public class Zjwz : NotificationObject
{
private string _zhuJieNeiRong;
public string ZhuJieNeiRong
{
get { return _zhuJieNeiRong; }
set
{
_zhuJieNeiRong = value;
RaisePropertyChanged();
}
}
}
数据对象需要的类
csharp
using System.Collections.Generic;
using System.ComponentModel;
namespace CommonSql
{
public class NotificationObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void RaisePropertyChanged( string propertyName = null)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
protected virtual bool SetProperty<T>(ref T member, T value, string propertyName = null)
{
if (EqualityComparer<T>.Default.Equals(member, value))
{
return false;
}
member = value;
RaisePropertyChanged(propertyName);
return true;
}
}
}