2

デフォルトでは、WPF データグリッド テキストはラベルとして表示され、クリックすると編集状態になります。(クリックイベントに依存するのではなく) テキストボックスが常に表示されるように列を変更する方法はありますか? 前もってありがとう、JP

4

1 に答える 1

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;
        }
    }
}
于 2010-05-25T16:53:43.760 に答える