Я пытаюсь переименовать столбец в сетке данных WPF.Я предоставляю контекстное меню пользователю для переименования столбца.Когда пользователь нажимает на переименование из заголовка столбца определенного столбца, я применяю стиль к заголовку столбца, используя следующий код и стиль.
private void RenameColumn_Executed(object sender, ExecutedRoutedEventArgs e)
{
if (e != null)
{
if (e.Parameter != null)
{
if ((e.Parameter as DataGridColumnHeader) != null)
{
this.DefaultColHeaderStyle = (e.Parameter as DataGridColumnHeader).Style;
this.RenamedColIndex = (e.Parameter as DataGridColumnHeader).DisplayIndex;
(this.grTestData.ColumnFromDisplayIndex(this.RenamedColIndex)).HeaderStyle = this.grTestData.Resources["RenameColumnHeader"] as Style;
}
}
}
}
Я привязываю это текстовое поле к свойству:
<Style x:Key="RenameColumnHeader" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid FocusManager.FocusedElement="{Binding ElementName=txtBxRename}">
<TextBox x:Name="txtBxRename" GotFocus="txtBxRename_GotFocus" LostFocus="txtBxRename_LostFocus" KeyDown="txtBxRename_KeyDown" TextChanged="txtBxRename_TextChanged" Text="{Binding Path=NewColName,Mode=TwoWay}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я реализовал интерфейс INotifyPropertyChanged для свойства NewColName:
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public string NewColName
{
get
{
return this.newColName;
}
set
{
this.newColName = value;
this.OnPropertyChanged("NewColName");
}
}
, но этоне вызывая измененного свойства, когда я начинаю печатать в текстовом поле.Я пытаюсь реализовать IDataErrorInfo для проверки текстового поля.Пожалуйста, ведите меня.Дайте мне знать, если вам нужна какая-либо другая информация о моем коде.