작은 배경을 먼저 지정하십시오. 텍스트 파일에 정의 된 기존 UI 컨트롤이 있으며 동일한 텍스트 파일을 구문 분석하여 xaml을 만듭니다.WPF GridViewColumnHeader 고정 폭
컨트롤 중 하나는 WPF ListView과 비슷하며 텍스트 파일에는 자체 속성이있는 열의 모음을 저장할 수 있습니다. 이러한 속성 중 하나는 열이 WPF가 자동으로 제공하지 않는 고정 너비를 갖는지 여부를 나타냅니다.
이 그림은, 그래서 여기에 천 단어를 구사 네 개의 열이있는 ListView에를 포함하는 구문 분석 파일의 예입니다 : 단순함을 위해서 내가 데모 용 색소를 사용한
. 빨간색 텍스트가있는 첫 번째 열은 고정 너비가있는 열입니다.
이것을 달성하기 위해, 파싱하는 동안, 각각의 GridViewColumnHeader 자체가 그 열에 대한 특성에 포함되는 플래그 (즉 "IsFixed 등록")에 따라 수정 될 수 스타일를 수신한다. 열 너비를 해결하기 위해, 나는 의 minWidth과 스타일 최대 너비 setter를 추가하는 스타일을 만들었습니다. ColumnResize은 사용자 지정 열거 형입니다.
private void _ModifyColumnResize(ref Style style, ColumnResize columnResize, int width)
{
if (columnResize == ColumnResize.IsFixed)
{
var minWidth = new Setter(MinWidthProperty, (double)width);
var maxWidth = new Setter(MaxWidthProperty, (double)width);
var fixedColor = new Setter(ForegroundProperty, Brushes.Red);
style.Setters.Add(minWidth);
style.Setters.Add(maxWidth);
style.Setters.Add(fixedColor);
}
}
이 모두 자동으로 (다른 세 열 등)의 내용의 그것과 폭을 변경하지 않습니다 열 그립에 잘, 더블 클릭을 작동하는 것 같다. 문제는 내가 그리퍼를 클릭하면 다음 다음 내가 볼 크기를 조정하려고 할 것입니다이 :
당신이 볼 수 있듯이, 열 자체가 동일한 폭을 가지고 있지만, 컬럼의 왼쪽과 오른쪽에 , 띄어쓰기가 나타나지 않는다.
제 질문은 스타일을 통해이 동작을 중지 할 수 있습니까? 이상적으로 그리퍼가 크기 조정을 허용하지 않는 열에 표시되는 것을 원하지 않지만 스타일이 (구문 분석 중에) 코드 숨김으로 만들어지며이를 수행하는 방법을 확신 할 수 없습니다. xaml.
시간 내 주셔서 감사합니다.
내가 MSDN에서 GridViewColumnHeader에 대한 기본 서식 파일의 사본을 잡고 부분 PART_HeaderGripper을 제거 : 여기 @DareToExplore하는 감사와
당신은 '이상적으로 크기 조정을 허용하지 않는 칼럼에 그리퍼를 표시하고 싶지 않습니다.'라고 말했습니까? 사용자가 앱의 항목 헤더에서 수행 할 수있는 작업을 알고 싶습니까? – DareToExplore
안녕하세요, 그들은 정렬하고 문제가되는 것으로 볼 수없는 열 레이아웃 (드래그 앤 드롭)을 재 할당 할 수 있어야합니다. 문제는 - 당장은 오래된 통제에서 칼럼이 고정 된 너비를 가졌다 고 말할 수있었습니다. 고맙습니다. – user3235445
[this] (http://stackoverflow.com/questions/181956/prevent-user-from-resizing-columns-with-wpf-listview)를 확인 했습니까? 귀하의 시나리오에 따라, 당신은 열 머리글 컨트롤 템플릿을 수정해야한다고 생각합니다. 사용자가 다른 것들 (정렬/드래그/드롭)에 대한 헤더와 상호 작용할 것이므로 헤더를 비활성화 할 수 없습니다. – DareToExplore