Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用代码制作DataGrid模板?_C#_Wpf_Xaml - Fatal编程技术网

C# 如何使用代码制作DataGrid模板?

C# 如何使用代码制作DataGrid模板?,c#,wpf,xaml,C#,Wpf,Xaml,我只想使用C#创建这个XAML模板: 我只想用XAML定义网格,我想用C#制作整个模板。 我不知道从哪里开始。我想你所需要的就是在这个网站上查看它: 您应该使用FrameworkElementFactory() XAML: 因此,每当我想要创建一个列模板时,我都必须使用FrameworkElementFactory以我需要的方式创建它,对吗?是的,如果你想在代码中这样做,你应该使用FrameworkElementFactory,但更好的选择是XAML。 <DataGrid Altern

我只想使用C#创建这个XAML模板:


我只想用XAML定义网格,我想用C#制作整个模板。

我不知道从哪里开始。

我想你所需要的就是在这个网站上查看它:


您应该使用
FrameworkElementFactory
()

XAML:


因此,每当我想要创建一个列模板时,我都必须使用
FrameworkElementFactory
以我需要的方式创建它,对吗?是的,如果你想在代码中这样做,你应该使用
FrameworkElementFactory
,但更好的选择是XAML。
<DataGrid AlternationCount="2" AutoGenerateColumns="False" Margin="6,78,9,47" Name="datagrid_Jobs">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Title, Mode=OneWay}" Header="Job" />
        <DataGridTextColumn Binding="{Binding Mode=TwoWay, Path=Score}" Header="Score" />
        <DataGridTemplateColumn Header="Perecent Complete">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Slider Margin="5" Maximum="100" Minimum="0" Value="{Binding Path=Score, UpdateSourceTrigger=PropertyChanged}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
<DataGrid AlternationCount="2" AutoGenerateColumns="False" Margin="6,78,9,47" Name="datagrid_Jobs"
          Loaded="datagrid_Jobs_Loaded">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Title, Mode=OneWay}" Header="Job" />
        <DataGridTextColumn Binding="{Binding Mode=TwoWay, Path=Score}" Header="Score" />
        <DataGridTemplateColumn x:Name="pcColumn" Header="Perecent Complete" />
    </DataGrid.Columns>
</DataGrid>
public void datagrid_Jobs_Loaded(object sender, EventArgs e)
{
    FrameworkElementFactory sliderHolder = new FrameworkElementFactory(typeof(Slider));
    sliderHolder.SetBinding(Slider.ValueProperty, new Binding("Score") { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged });
    sliderHolder.SetValue(Slider.MarginProperty, new Thickness(5));
    sliderHolder.SetValue(Slider.MaximumProperty, (double)100);
    sliderHolder.SetValue(Slider.MinimumProperty, (double)0);
    var dataTemplate = new DataTemplate();
    dataTemplate.VisualTree = sliderHolder;
    dataTemplate.DataType = typeof(DataGridTemplateColumn);
    pcColumn.CellTemplate = dataTemplate;
}