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