1

ListView で GridViewColumns のスタイルを設定する方法を見つけようと、stackoverflow を閲覧していました。私はこれに出くわしました:

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

テンプレート セレクターを使用する場合: クラスを作成し、リソース dict でインスタンス化し、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 に答える