DataGridTemplateColumn作为自定义控件

时间:2014-06-06 15:40:07

标签: c# .net wpf datagrid datagridtemplatecolumn

我尝试根据DataGridTemplateColumn进行自定义控制,以便在简单的datagrid中使用它。

我的XAML代码看起来:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:dgNuCol="clr-namespace:Columns.DataGridNumberColumn"
                    xmlns:nb="clr-namespace:NumberBox"  >
    <Style TargetType="{x:Type dgNuCol:DataGridNumberColumn}">
        <Setter Property="CellEditingTemplate">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type dgNuCol:DataGridNumberColumn}">
                    <nb:NumberBox Text="123"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="CellTemplate">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type dgNuCol:DataGridNumberColumn}">
                    <StackPanel>
                        <TextBlock Text="123" HorizontalAlignment="Center" />
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

我的cs代码:

namespace Columns.DataGridNumberColumn
{
    public partial class DataGridNumberColumn : DataGridTemplateColumn
    {
    }
}

我尝试在datagrid

中使用它
        <dgNuCol:DataGridNumberColumn Header="Values" CanUserReorder="False"/>

什么都没发生。我的datagrid没有任何变化,只是空单元格。我做错了什么?

更新:

我尝试以编程方式制作它:

public partial class DataGridNumberColumn : DataGridTemplateColumn
    {
        public DataGridNumberColumn()
        {

            FrameworkElementFactory textFactory = new FrameworkElementFactory(typeof(TextBox));
            textFactory.SetValue(TextBox.TextProperty, "123");
            DataTemplate textTemplate = new DataTemplate();
            textTemplate.VisualTree = textFactory;
            this.CellTemplate = textTemplate;
        }
    }

但是,再次,datagrid没有任何变化。

UPDATE2:

<DataGrid>
    <DataGrid.Columns>
        <dgNuCol:DataGridNumberColumn Header="Values" CanUserReorder="False"/>
    </DataGrid.Columns>
</DataGrid>

0 个答案:

没有答案