1

我正在浏览stackoverflow,试图找出一种在我的ListView 中设置GridViewColumns 样式的方法。我遇到了这个:

GridViewColumn 中的 WPF 文本格式

最佳答案显示了如何设置一 (1) 个 GridViewColumn 的样式。我的问题是,有没有办法在 Window.Resources 中设置这些 GridViewColumns 的样式,这样我就不必为每个单独的 GridViewColumn 都这样做?

4

1 回答 1

2

有几种可能:

<!-- if style doesn't change -->
<GridViewColumn CellTemplate="{StaticResource yourCellTemplate}"/>

<!-- if you need to change it up based on criteria - template selector-->
<GridViewColumn CellTemplateSelector="{StaticResource YourTemplateSelector}"/>

<!-- same goes for headers -->
<GridViewColumn HeaderTemplate="{StaticResource yourheaderTempalte}"/>
 ..or HeaderContainerStyle, HeaderTemplateSelector

如果你想使用模板选择器:创建一个类,在资源字典中实例化它,然后将它插入你的 gridview 列,这里有一个小示例

public class MyTemplateSelector : DataTemplateSelector
{
    public DataTemplate SimpleTemplate { get; set; }
    public DataTemplate ComplexTemplate { get; set; }

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
                 //if I have just text
                   return SimpleTemplate;
                 //if I have comments and other fancy stuff 
                     return ComplexTemplate;

然后在你的 ResourceDictionary

<DataTemplate x:Key="ComplexTemplate">
    <Views:MyCustomControl DataContext="{Binding}"/>
</DataTemplate>

<Views:MyTemplateSelector
    x:Key="TxtVsExpensiveCell_TemplateSelector"
    SimpleTemplate ="{StaticResource SimpleTemplate}"
    ComplexTemplate="{StaticResource ComplexTemplate}"/>

   <!-- then you use it in your view like this -->
   <GridViewColumn CellTemplateSelector="{StaticResource TxtVsExpensiveCell_TemplateSelector}"/>

如果您不想经历所有这些麻烦,只是想调整预定义控件的样式,为什么不使用 DataGrid?它具有预定义的列,您可以在其中调整每个列的样式。

<DataGrid>
    <DataGrid.Columns>
        <DataGridTextColumn/>
        <DataGridCheckBoxColumn/>
        <DataGridHyperlinkColumn/>
        <DataGridCheckBoxColumn/>
                     ....there are several more column types!
    </DataGrid.Columns>
</DataGrid>
于 2012-04-27T14:52:05.857 回答