WPF의 dataGridCells에 패딩 설정
간단한 질문 : WPF의 dataGridCell에 패딩을 어떻게 설정할 수 있습니까? (한 번에 하나씩 또는 모든 셀에 상관 없음)
DataGrid.CellStyle
속성에 setter를 추가하고 효과없이 동일한 방식으로 속성 DataGridCell.Padding
을 사용하여 DataGridColumn.CellStyle
속성 을 사용해 보았습니다 .
나는 또한 DataGridColumn.ElementStyle
더 이상 운이없는 재산을 사용해 보았습니다 .
나는 거기에 갇혀있어, 누구든지 dataGridCell에 패딩을 적용 할 수 있었습니까?
NB : 아니요, 이미 다른 것에 테두리 속성을 사용하고 있기 때문에 투명 테두리를 사용할 수 없습니다. 또한 배경 속성을 사용하고 셀 사이에 "빈"공간을 원하지 않기 때문에 margin 속성 (놀랍게도 충분히 작동하는 것 같음)을 사용할 수 없습니다.
문제는 .NET 용 템플릿에있는 Padding
로 전송되지 않는다는 것 Border
입니다 DataGridCell
. 템플릿을 편집하고 다음에 대한 TemplateBinding을 추가 할 수 있습니다.Padding
<DataGrid ...>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Padding" Value="20"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.CellStyle>
<!--...-->
</DataGrid>
다음은 David의 접근 방식을 결합한 더 깨끗한 방법입니다.
<Resources>
<Style x:Key="ColumnElementStyle" TargetType="TextBlock">
<Setter Property="Margin" Value="5,0,10,0" />
</Style>
</Resources>
그때...
<DataGridTextColumn ElementStyle="{StaticResource ColumnElementStyle}" />
<DataGridTextColumn ElementStyle="{StaticResource ColumnElementStyle}" />
(제 경우에는 행이 읽기 전용이므로 EditingStyle이 없습니다)
거의 5 년이 지난 후에도이 질문은 여전히 사용중인 것 같고 (여전히 찬성 중) 요청을 받았기 때문에 TextColumn에서 사용한 솔루션 (ElementStyle 사용)이 있습니다. 모든 유형의 DataGridColumn) :
나는 모든 것을 코드 뒤에서 수행했습니다.
class MyTextColumn : DataGridTextColumn
{
public MyTextColumn()
{
ElementStyle = new Style(typeof(TextBlock));
EditingElementStyle = new Style(typeof(TextBox));
ElementStyle.Setters.Add(new Setter(FrameworkElement.MarginProperty, new Thickness(3)));
EditingElementStyle.Setters.Add(new Setter(Control.PaddingProperty, new Thickness(0, 1, 0, 1)));
}
}
그러나 xaml에서 직접 수행하려면 다음을 수행하십시오.
<DataGrid.Columns>
<DataGridTextColumn>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="3"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="Padding" Value="0 1 0 1"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.Columns>
<DataGridTextColumn MinWidth="100" Header="Changed by" Width="" Binding="{Binding Changedby}" IsReadOnly="True" >
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="Transparent" />
<Setter Property="FrameworkElement.HorizontalAlignment"Value="Center"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
당신은 또한 변화를 시도 할 수 있습니다
{Binding BindingValue, StringFormat={}{0:#0.0000}}
...에
{Binding BindingValue, StringFormat={}{0:#0.0000 }}
Interestingly enough WPF's XAML {0:#0.0000 } will honor this extra space character in the format of the rendered control to move your values off of the edge of your grid columns.
참고URL : https://stackoverflow.com/questions/5246745/set-a-padding-on-datagridcells-in-wpf
'Program Tip' 카테고리의 다른 글
Visual Studio의 빌드 후 이벤트 명령 줄에서 .bat 파일을 실행할 수 있습니까? (0) | 2020.12.14 |
---|---|
내 배열 목록의 항목 수 계산 (0) | 2020.12.14 |
RSpec 테스트 후 ActionMailer :: Base.deliveries 지우기 (0) | 2020.12.14 |
Android : APK가 대상으로하는 플랫폼 버전을 찾는 방법은 무엇입니까? (0) | 2020.12.14 |
PHP의 변수에 문자열을 추가 할 수 있습니까? (0) | 2020.12.14 |