2016-07-04 2 views
0

次の問題が発生しました セルの内容が折り返されるカスタマイズされたテーブルを設定しています。 ビューを正しく設定することができます。コードは次のとおりです。テンプレートを使用してすべてのセルを折り返すようにTextWrappingを設定する

<Grid Style="{StaticResource FormBackground}"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="20" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="20" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="15" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="40" /> 
     <RowDefinition Height="10" /> 
    </Grid.RowDefinitions> 

    <Grid Grid.Column="1" Grid.Row="1"> 
     <Border Style="{StaticResource DGBorder}"> 
      <DataGrid x:Name="usuariosGrid" 
        AutoGenerateColumns="False" 
        CanUserAddRows="False" 
        Grid.Row="0" 
        Style="{StaticResource Table}" > 
       <DataGrid.Columns> 
        <DataGridTextColumn Header="ID" Width="40" Binding="{Binding Id}" IsReadOnly="True"> 
         <DataGridTextColumn.ElementStyle> 
          <Style TargetType="TextBlock"> 
           <Setter Property="TextWrapping" Value="Wrap" /> 
          </Style> 
         </DataGridTextColumn.ElementStyle> 
        </DataGridTextColumn> 
        <DataGridTextColumn Header="Nombre" Width="*" Binding="{Binding Nombre}" IsReadOnly="True"> 
         <DataGridTextColumn.ElementStyle> 
          <Style TargetType="TextBlock"> 
           <Setter Property="TextWrapping" Value="Wrap" /> 
          </Style> 
         </DataGridTextColumn.ElementStyle> 
        </DataGridTextColumn> 
        <DataGridTextColumn Header="Apellido Paterno" Width="*" Binding="{Binding ApellidoPaterno}" IsReadOnly="True"> 
         <DataGridTextColumn.ElementStyle> 
          <Style TargetType="TextBlock"> 
           <Setter Property="TextWrapping" Value="Wrap" /> 
          </Style> 
         </DataGridTextColumn.ElementStyle> 
        </DataGridTextColumn> 
        <DataGridTextColumn Header="Apellido Materno" Width="*" Binding="{Binding ApellidoMaterno}" IsReadOnly="True"> 
         <DataGridTextColumn.ElementStyle> 
          <Style TargetType="TextBlock"> 
           <Setter Property="TextWrapping" Value="Wrap" /> 
          </Style> 
         </DataGridTextColumn.ElementStyle> 
        </DataGridTextColumn> 
        <DataGridTextColumn Header="CorreoElectronico" Width="*" Binding="{Binding CorreoElectronico}" IsReadOnly="True"> 
         <DataGridTextColumn.ElementStyle> 
          <Style TargetType="TextBlock"> 
           <Setter Property="TextWrapping" Value="Wrap" /> 
          </Style> 
         </DataGridTextColumn.ElementStyle> 
        </DataGridTextColumn> 
       </DataGrid.Columns> 
      </DataGrid> 
     </Border> 
    </Grid> 

は良い作品が、私はテキストボックスを設定する必要が原因、かなり多くの醜いです - > TextWrapping - すべての列のための>ラップカスタム。同様に、プロジェクトには複数のDataGridが含まれています。

<Style x:Key="Table" TargetType="DataGrid"> 
    <Setter Property="Foreground" Value="{StaticResource WhiteBrush}" /> 
    <Setter Property="RowBackground" Value="Transparent"/> 
    <Setter Property="AlternatingRowBackground" Value="{StaticResource DarkBlueFadedBrush}" /> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="BorderThickness" Value="0"/> 
    <Setter Property="ColumnHeaderStyle" Value="{StaticResource DGColumnHeader}" /> 
    <Setter Property="RowStyle" Value="{StaticResource SelectedRow}"/> 
    <Setter Property="GridLinesVisibility" Value="None" /> 
    <Setter Property="RowHeaderWidth" Value="0" /> 
    <Setter Property="BorderBrush" Value="{StaticResource LightBlueBrush}" /> 
</Style> 

をこの時点の楽しみで始まります: - だから、確かに私があるのResourceDictionary、それにすべてをパックしたいDataGridTextColumnがスタイルとしてそれを設定するためにサポートされていません。

井戸はどこにありますか? Webの周りの仲間のひとりが、バックコードを使うよう提案しました。それは公正です。しかし、私は、この種の改善を分けなければならないという信念を持っています(そして、フォームを含む各視聴者にコードを追加する必要があるため)。

どのようなご提案、作業指示書などもありがとうございます。

答えて

0
  1. DataGridsに共通する複数のものを残したい場合。新しいクラスをDataGridから派生させると、新しいControlが作成されます。

  2. いつでもこれを行うことができます:<DataGridTextColumn ElementStyle="{StaticResource tbKey}" Binding="{Binding Name}"/>

    <Style TargetType="TextBlock" x:Key="tbKey"> 
         <Setter Property="TextWrapping" Value="Wrap" /> 
        </Style> 
    
+0

私は急いでやっているようです。私がもう一度見たとき、私の解決策はあなたの提案とまったく同じように見えました。あなたのものを正しいものとしてマーキングする。ありがとうございました。 –

1

これは、この特定の状況では、私のために働いていたものです。 スタイル:

<Style TargetType="{x:Type TextBlock}" x:Key="WrapText"> 
    <Setter Property="TextWrapping" Value="Wrap"/> 
</Style> 

使用法:

<DataGrid.Columns> 
    <DataGridTextColumn Header="ID" Width="40" Binding="{Binding Id}" IsReadOnly="True" ElementStyle="{StaticResource WrapText}" /> 

ので、全体のトリックはDataGridTextColumnを記述する際に、ElementStyleプロパティでスタイルを定義についてでした。
それが役に立つと願っています。

関連する問題