2017-03-15 11 views
0

データグリッドの列ヘッダーに、キャンバスを配置します。これは、列の左端に配置されています。すなわち、列とコントロールの間に余白がありません。ただし、列とコントロールの間には常にスペースがあります。私はどのように絵の中の小さな隙間を取り除くのかと思っていますか?背景色(ItemsControl = LightBlue、Canvas = LemonChiffon)が表示されない理由は同じですが、同じ理由があると思います。DataGrid ColumnHeaderの書式マージン/パディング

enter image description here

所望の設計は、次のようになります。ここでは

enter image description here

は私のコードです:

に-5所望のデザインが表示されないマージンを設定
<Grid DataContext="{StaticResource vmJp}"> 
    <DataGrid x:Name="dgProj" AutoGenerateColumns="False" IsReadOnly="True" CanUserAddRows="False" Margin="10" ItemsSource="{Binding Baustellen}" BorderThickness="0" HeadersVisibility="Column" Padding="0"> 
     <DataGrid.Columns> 
     .... 

      <DataGridTemplateColumn Width="1*" x:Name="coPlanung"> 
       <DataGridTemplateColumn.HeaderTemplate> 
        <DataTemplate> 
         <ItemsControl ItemsSource="{Binding DataContext.Monate, ElementName=dgProj}" Margin="0" VerticalAlignment="Center" Background="LightBlue"> 
          <ItemsControl.ItemContainerStyle> 
           <Style TargetType="ContentPresenter"> 
            <Setter Property="Canvas.Left"> 
             <Setter.Value> 
              <MultiBinding Converter="{StaticResource d2x}"> 
               <Binding Path="Date" Mode="OneWay" /> 
               <Binding Path="ActualWidth" ElementName="coPlanung" Mode="OneWay"/> 
              </MultiBinding> 
             </Setter.Value> 
            </Setter> 
           </Style> 
          </ItemsControl.ItemContainerStyle> 
          <ItemsControl.ItemsPanel> 
           <ItemsPanelTemplate> 
            <Canvas Width="{Binding ActualWidth, ElementName=coPlanung}" Margin="0" Background="LemonChiffon"/> 
           </ItemsPanelTemplate> 
          </ItemsControl.ItemsPanel> 
          <ItemsControl.ItemTemplate> 
           <DataTemplate> 
            <!--Monthnames--> 
            <TextBox Text="{Binding Path=Date, StringFormat={}{0:MMM-yyyy}, Mode=OneWay}" HorizontalAlignment="Center" VerticalAlignment="Center" Background="Transparent" Margin="0"> 
             <TextBox.Width> 
              <MultiBinding Converter="{StaticResource d2b}"> 
               <Binding Path="Date" Mode="OneWay" /> 
               <Binding Path="ActualWidth" ElementName="coPlanung" Mode="OneWay"/> 
              </MultiBinding> 
             </TextBox.Width> 
            </TextBox> 
           </DataTemplate> 
          </ItemsControl.ItemTemplate> 
         </ItemsControl> 
        </DataTemplate> 
       </DataGridTemplateColumn.HeaderTemplate> 

enter image description here

コード

<DataGridTemplateColumn x:Name="coPlanung"> 
    <DataGridTemplateColumn.HeaderStyle> 
     <Style TargetType="DataGridColumnHeader"> 
      <Setter Property="Padding" Value="0"/> 
      <Setter Property="Margin" Value="-5"/> 
     </Style> 
    </DataGridTemplateColumn.HeaderStyle> 
    <DataGridTemplateColumn.HeaderTemplate> 
    ... 

ソリューション:、それはDataGridプロパティは-5 ContentPresenter

<Style TargetType="ContentPresenter">           
    <Setter Property="Margin" Value="-5"/> 

答えて

1

どのように私は画像の中にyelloが表示されている小さな空間を取り除くのだろうか?

あなたが負のマージンとDataGridColumnHeaderスタイルにDataGridTemplateColumnHeaderStyleを設定できます

<DataGridTemplateColumn x:Name="coPlanung"> 
    <DataGridTemplateColumn.HeaderStyle> 
     <Style TargetType="DataGridColumnHeader"> 
      <Setter Property="Padding" Value="0"/> 
      <Setter Property="Margin" Value="-5"/> 
     </Style> 
    </DataGridTemplateColumn.HeaderStyle> 
    <DataGridTemplateColumn.HeaderTemplate> 
    ... 

は私も疑問、なぜ背景色のい​​ずれも(ItemsControlに=水色、キャンバス= LemonChiffon)私はそれが同じ理由であると思います。

CanvasにはHeightを指定してください。 ItemsControlの背景はItemsPanelの背後に隠されています。あなたが任意のさらなる支援を旧姓ならレポを提供してください:https://stackoverflow.com/help/mcve

編集:すでに気づいているとして、あなたはまた、MarginContentPresenterの設定を試みることができる:動作しないこと、残念ながら

<Style TargetType="ContentPresenter">           
    <Setter Property="Margin" Value="-5"/> 
</Style> 
+0

私は質問を更新しましたが、うまくいかなかったのですが、正しい方向に私を指摘しました。ありがとうございます。あなたがあなたの答えを更新したら、それを答えとして受け入れます。 –

+0

私は答えを更新しました。どのバージョンのWindowsをお使いですか? – mm8

+0

私はwindows 10を使用しています。すべてのクライアントがwin 10でも実行されているので、私はそれに焦点を当てませんでした。これはどういうわけか考えなければなりませんか? –

0

RowHeaderWidth="0"を設定してみマージンを設定します。

//編集 多分何かが干渉している可能性があります。ここ はあなたDataGridのスタイルを設定するための最も重要な特性のリンクです:あなたが見ることができるようにStyling Microsoft’s WPF datagrid

そして、ここでは簡単な例

<DataGrid ItemsSource="{Binding ViewModels}" /> 

without

<DataGrid ItemsSource="{Binding ViewModels}" 
      RowHeaderWidth="0"/> 

with

ですRowHeaderはなくなりました。

+0

。 –

+0

私の写真はあまり問題がないと思う。問題は、列ヘッダーをどのようにフォーマットするかではなく、行ヘッダーを取り除く方法ではないので、コントロールの左にスペースが残っています。あなたの例では、明るい灰色の線とZweiの間にスペースはないはずです。 –

+0

ハハ、ok。私は黄色の領域とそれが私のRowHeaderのように見える場合、あなたはただ取り除きたいと思った;) –

関連する問題