По умолчанию WPat datagridtext отображается как метка и переходит в состояние редактирования при нажатии. Есть ли способ изменить столбец так, чтобы текстовое поле всегда отображалось (а не в зависимости от события клика)? Заранее спасибо, JPWPF datagridtextcolumn - всегда показывать текстовое поле
2
A
ответ
1
Я обновил свой ответ на основе вашего разъяснения в вашем комментарии. Вы можете сами установить шаблон для ячеек. Ниже приведен пример, в котором возрастный столбец использует текстовые блоки.
XAML:
<Window x:Class="GridTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
Height="300" Width="300">
<StackPanel>
<Controls:DataGrid Name="dataGrid" AutoGenerateColumns="False" >
<Controls:DataGrid.Columns>
<Controls:DataGridTextColumn
Header="Name"
Binding="{Binding Path=Name}" />
<Controls:DataGridTemplateColumn Header="Age">
<Controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Age}" />
</DataTemplate>
</Controls:DataGridTemplateColumn.CellTemplate>
<Controls:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Age}" />
</DataTemplate>
</Controls:DataGridTemplateColumn.CellEditingTemplate>
</Controls:DataGridTemplateColumn>
</Controls:DataGrid.Columns>
</Controls:DataGrid>
</StackPanel>
</Window>
Код позади:
using System;
using System.Collections.Generic;
using System.Windows;
namespace GridTest
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
dataGrid.ItemsSource = new List<Person>(
new Person[]
{
new Person("Bob", 30),
new Person("Sally", 24),
new Person("Joe", 17)
});
}
}
public class Person
{
public String Name { get; set; }
public int Age { get; set; }
public Person(String name, int age)
{
Name = name;
Age = age;
}
}
}
Нет, я говорю, что datagridtextcolumn является Multistate. Первое состояние - это метка. Нажатие на метку позволяет вводить данные. Потеря фокуса переключает его обратно на метку. Вы видите только текстовое поле при редактировании определенной строки - я всегда хотел бы видеть тексбокс –