我尝试以编程方式在某个列周围添加一个厚边框。我可以使用相同的方法更改Background
属性,但无论如何都不会更改border属性。
if (eligibleProperties.Contains(column.Header.ToString()))
{
Setter s1 = new Setter(GridViewCell.BorderThicknessProperty, new Thickness(7));
Setter s2 = new Setter(BorderBrushProperty, Brushes.Black);
Style st = new Style(typeof(GridViewCell));
st.Setters.Add(s1);
st.Setters.Add(s2);
column.CellStyle = st;
}
背景更改的工作代码
if (eligibleProperties.Contains(column.Header.ToString()))
{
Setter s2 = new Setter(BackgroundProperty, Brushes.Black);
Style st = new Style(typeof(GridViewCell));
st.Setters.Add(s2);
column.CellStyle = st;
}
答案 0 :(得分:1)
由于Telerik class Product < ApplicationRecord
...
has_and_belongs_to_many :tags
...
end
的默认模板结构,修改单元格边框实际上比设置GridViewCell
和BorderThickness
属性更复杂。
您需要修改控件模板。有关此内容的更多信息,请参阅以下主题。
如何更改单元格样式选择器中的边框颜色: https://www.telerik.com/forums/how-do-i-change-border-color-in-cell-style-selector
更改行边框颜色: https://www.telerik.com/forums/change-the-row-border-colour
答案 1 :(得分:1)
我认为您最好的选择是更改该列的单元格模板,您甚至可以通过将列的telerik:GridViewDataColumn.CellStyle
设置为此来动态执行此操作:
<Style TargetType="{x:Type telerik:GridViewCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="telerik:GridViewCell">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
<ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" ToolTip="{TemplateBinding ToolTip}" VerticalAlignment="Center" Margin="3,0"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在,您的单元格具有要使用的属性BorderThickness
和BorderBrush
。就像下面这个例子中一样,你的单元格周围会有一个粗红色的边框:
<telerik:GridViewDataColumn Header="MyColumn1" DataMemberBinding="{Binding MyColumn1Binding}" Width="150" >
<telerik:GridViewDataColumn.CellStyle>
<Style TargetType="{x:Type telerik:GridViewCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="telerik:GridViewCell">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
<ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" ToolTip="{TemplateBinding ToolTip}" VerticalAlignment="Center" Margin="3,0"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Propert="BorderBrush" Value="Red" />
<Setter Propert="BorderThickness" Value="2,2,2,2" />
</Style>
</telerik:GridViewDataColumn.CellStyle>
</telerik:GridViewDataColumn
例如,使用厚度也可以隐藏顶部和底部边框。在样式中,您还可以使用Style.Triggers
并根据多个DataTriggers
定义不同的边框设置。
我相信这比以编程方式添加边框提供了更大的灵活性。但是,如果您真的想在代码中执行此操作,那么您仍然可以在XAML中定义模板,就像在我的第一个示例中那样,这应该会使代码中的setter产生影响。
如果这仍然不够,那么完全以编程方式定义单元格的模板将是您的下一个最佳选择。如果您需要帮助将XAML翻译成实际代码,请留下评论,但我相信在XAML中做得更好。