Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
Wpf Datagrid复选框样式_Wpf_Datagrid_Checkbox_Styles - Fatal编程技术网

Wpf Datagrid复选框样式

Wpf Datagrid复选框样式,wpf,datagrid,checkbox,styles,Wpf,Datagrid,Checkbox,Styles,你好 首先对不起我的英语。 我最近开始了我的第一个wpf项目。我正在设计一个自定义的DataGrid,它是通过编程定义的,xaml代码不存在。 除了包装在datagrid控件中的复选框之外,我已经为datagrid控件中需要的所有内容设置了样式。 问题是,在我的应用程序的另一个地方,我定义了一个复选框样式,说明如何正确应用,但我不能在我的datagrid中应用。 实际上,我的datagrid不会抛出语法错误,但当datagrid运行时,复选框样式不适用。 样式代码如下所示,它是在样式表中定义的

你好 首先对不起我的英语。 我最近开始了我的第一个wpf项目。我正在设计一个自定义的DataGrid,它是通过编程定义的,xaml代码不存在。 除了包装在datagrid控件中的复选框之外,我已经为datagrid控件中需要的所有内容设置了样式。 问题是,在我的应用程序的另一个地方,我定义了一个复选框样式,说明如何正确应用,但我不能在我的datagrid中应用。 实际上,我的datagrid不会抛出语法错误,但当datagrid运行时,复选框样式不适用。 样式代码如下所示,它是在样式表中定义的

... <Setter Property="DataGridCheckBoxColumn.ElementStyle">
        <Setter.Value>
            <Style TargetType="{x:Type CheckBox}">

                <Setter Property="Background" Value="Yellow"/>
                <Setter Property="BorderBrush" Value="{DynamicResource NormalBorderBrush}"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type CheckBox}">


                            <BulletDecorator Background="Transparent">
                                <BulletDecorator.Bullet>
                                    <Grid Width="13" Height="13">
                                        <Border x:Name="Border" Background="Pink" BorderBrush="Black" BorderThickness="1,1,1,1" CornerRadius="2,2,2,2"/>
                                        <Path x:Name="CheckMark" Stroke="Green" StrokeThickness="2" SnapsToDevicePixels="False" Data="M1.5000001,1.5833334 L9.7920001,9.6666667 M1.5420001,9.6666667 L9.7083333,1.5000001" Margin="1" ClipToBounds="False" StrokeEndLineCap="Round" StrokeStartLineCap="Round"/>
                                    </Grid>
                                </BulletDecorator.Bullet>
                                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
                            </BulletDecorator>

                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Setter.Value>

    </Setter>...
这与它在应用中的应用完全相同。 我已经读了很多关于它的书,但我无法应用它,我也尝试过将setter属性设置为datagridboundcolumn.ElementStyle和CellStyle,但它不起作用。 有什么建议吗??
非常感谢。

像在xaml中一样操作:

this.dataGrid.Columns.Addnew DataGridTemplateColumn { CellTemplate=this.Resources[CheckBoxTemplate]作为DataTemplate } ;
谢谢你的回复,沃尔特斯

我没有完全应用它,但它帮助我找到了解决方案,但是我不希望修改VB代码,只希望修改xaml样式标记

我找到了一个简化这项任务的方法。语法如下所示:

column2.ElementStyle = Application.Current.FindResource("CheckBoxStyle")
它在datagrid中应用样式ok。但实际上,它位于细胞的左边缘。我会努力找出原因

再次感谢

你可以试试这个

<Controls:DataGridCheckBoxColumn Header="Homme"  Binding="{Binding Homme}">
                        <Controls:DataGridCheckBoxColumn.ElementStyle>
                            <Style TargetType="CheckBox" BasedOn="{StaticResource {x:Type CheckBox}}">
                                <Setter Property="Margin" Value="4,0,0,0"/>
                            </Style>
                        </Controls:DataGridCheckBoxColumn.ElementStyle>
                    </Controls:DataGridCheckBoxColumn>