두 가지 다른보기에서 사용되는 DataGrid가 있습니다. 각 경우에 사용자가 호스트 컨트롤/뷰의 크기를 조절하면 마지막 열의 너비를 조정할 수 있습니다.데이터 격자의 마지막 열 크기를 조정합니다.
어떻게 하시겠습니까?
건배,
Berryl
<DataGrid.Columns>
<DataGridTextColumn
Header="Number" Binding="{Binding BusinessId}" IsReadOnly="True"
CanUserSort="True" CanUserResize="False"
Width="75"/>
<DataGridTextColumn
Header="Description" Binding="{Binding Description}" IsReadOnly="True"
CanUserSort="True" SortDirection="Ascending" CanUserResize="True"
MinWidth="260" Width="Auto" />
</DataGrid.Columns>
</DataGrid>
UPDATE (작업 코드)
난 그냥 이름
... CanUserResizeColumns = "참" xaml의 열 코드 숨김에 다음 코드를 삽입하십시오. 누구나 더 나은 아이디어 나이를 최적화 할 수있는 방법이 있다면 알려 주시기 바랍니다.
public partial class Listing : UserControl
{
private double _currentColumnWidth;
public Listing()
{
InitializeComponent();
Loaded += OnLoaded;
SizeChanged += OnSizeChanged;
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
_currentColumnWidth = colDescription.ActualWidth;
}
private void OnSizeChanged(object sender, SizeChangedEventArgs e)
{
// split if control is not loaded yet
if (_currentColumnWidth == 0) return;
// only interested in width, not height
var widthChanged = e.WidthChanged;
if (!widthChanged) return;
var delta = e.NewSize.Width - e.PreviousSize.Width;
var newWidth = _currentColumnWidth + delta;
if (newWidth <= colDescription.MinWidth || newWidth >= colDescription.MaxWidth) return;
_currentColumnWidth = newWidth;
colDescription.Width = new DataGridLength(_currentColumnWidth);
}
}
이것은 내가 한 것입니다. – gjvdkamp
@ Jason Ebersey. *와 Auto는 둘 다 자동 크기 조정 기능을 가지고 있습니다. 차이점은 Star가 "사용 가능한 공간의 가중치 비율에 따라 자동으로 크기를 조정합니다."반면 자동은 셀과 열 머리글의 내용을 기반으로 요소의 크기를 자동으로 조정합니다. 그리드가 Window에서 컨트롤 일 뿐이라면 솔루션이 완벽하게 작동한다고 생각하지만, 다른보기 컨테이너에서 호스팅되는 UserControl 내부에서 호스팅되는 열은 동기화되지 않습니다. – Berryl
아마 내가 질문을 할 때 그런 상황이 내가 tho를 해결하기 위해 찾고있는 상황이라는 것을 분명히하지 않았으므로 이것을 답으로 표시 할 것입니다! 건배 – Berryl