DataGrid가 포함 된 ListView를 항목 템플릿으로 표시하는 데 문제가 있습니다. 문제는 DataGrid의 열 너비가 잘못된 크기가되어 전체 컨트롤 너비를 채우지 못하는 것입니다.ListView 내의 DataGrid를 항목 템플릿으로
코드 :
<Window x:Class="WpfTest1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfTest1"
xmlns:system="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<x:Array x:Key="ListViewItems"
Type="{x:Type system:String}">
<system:String>1</system:String>
<system:String>2</system:String>
</x:Array>
<x:Array x:Key="DataGridItems"
Type="{x:Type system:String}">
<system:String>1</system:String>
<system:String>2</system:String>
<system:String>3</system:String>
</x:Array>
<DataTemplate x:Key="TemplateWidthDataGrid">
<DataGrid ItemsSource="{StaticResource DataGridItems}">
<DataGrid.Columns>
<DataGridTextColumn Header="Column1"
Width="*" />
<DataGridTextColumn Header="Column2"
Width="*" />
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</Window.Resources>
<Grid>
<ListView ItemTemplate="{StaticResource TemplateWidthDataGrid}"
ItemsSource="{StaticResource ListViewItems}" />
</Grid>
</Window>
결과는 다음과 같습니다 내가이 시나리오에서 컨트롤의 폭을 채우기 위해 열을 얻을 수있는 방법
?
내가있는 ListViewItem에
HorizontalContentAlignment
속성을 설정 한 씨께의 대답에 따라
업데이트되었습니다.
<ListView ItemTemplate="{StaticResource TemplateWithDataGrid}"
ItemsSource="{StaticResource ListViewItems}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment"
Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
(나는 또한 DataGrid
에 대한 AutoGenerateColumns="False"
을 설정했다.)
이 같은 ListView
외부 넣어 같은 DataGrid
와 비교해 :
<Grid>
<DataGrid ItemsSource="{StaticResource DataGridItems}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Column1"
Width="*" />
<DataGridTextColumn Header="Column2"
Width="*" />
</DataGrid.Columns>
</DataGrid>
</Grid>
답장을 보내 주셔서 감사합니다! HorizontalContentAlignment는 DataGrid에 영향을 미치지 만 열은 여전히 잘못된 너비로 표시됩니다. 업데이트 된 질문보기 – koxy
@koxy 나는 내 대답을 편집했다. 이제는 효과가있다. – CiccioRocca
감사합니다. 또 다른 문제는 윈도우 크기를 조정할 때 가로 스크롤 막대가 나타나고 사라지는 결함입니다. HorizontalScrollBarVisibility를 사용하여 어떻게 든 비활성화 할 수있는 방법이 있어야한다고 생각합니다. – koxy