DataGrid의 열 (DataContext는 다른 개체의 ObservableCollections가 됨), 일부 레이블의 텍스트 및 단추 클릭 처리기를 제외하고는 매우 유사한 WPF 창이 여러 개 있습니다.
각 창 <DataGrid.Columns>
에 대해 DataGrid 의 일부가 다릅니다. AutoGenerateColumns="False"
다른 개체에 대해 다른 열을 사용 하고 표시합니다.
기본 WPF 창을 서브 클래 싱하여 <DataGrid.Columns>
코드로 작성하는 대신 각 서브 클래스에 대한 XAML 부분을 작성할 수 있는지 궁금합니다 .
또는 XAML을 계속 사용하면서 WPF에서 DRY 원칙을 준수하기위한 다른 기술은 무엇입니까?
데이터 소스에서 DataGrid 열을 채우는 방법 ...
예, 여기에 한계가 있습니다. Columns
속성은 바인딩 아니다; 사실 설정도 할 수 없으며 컬렉션에서 추가 및 제거 만 할 수 있습니다. 이 질문에 대한 해결 방법이 있습니다. WPF DataGrid를 가변 개수의 열에 바인딩하는 방법은 무엇입니까?
따라서 이론적 <Application.Resources>
으로는에 열을 추가 한 다음 위의 질문에서와 같이 연결된 속성을 데이터 바인딩하고에서 가져 와서 데이터 소스 값을 기반으로 열 컬렉션을 빌드하는 값 변환기를 작성할 수 있습니다 Application.Current.Resources
. 그러나 이것은 필요한 것보다 더 복잡해 보입니다.
일부 Content
를 다른 DataGrid로 대체하는 스타일 트리거를 사용할 수 있다고 생각합니다 .
<ContentControl>
<ContentControl.Style>
<Style TargetType="ContentControl">
<Setter Property="Content">
<Setter.Value>
<DataGrid Style="{StaticResource CommonStyle}">
<DataGrid.Columns>
... default columns go here ...
</DataGrid.Columns>
</DataGrid>
<Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding SomeCondition}" Value="True">
<Setter Property="Content">
<DataGrid Style="{StaticResource CommonStyle}">
<DataGrid.Columns>
... alternate columns ...
</DataGrid.Columns>
</DataGrid>
</Setter>
</DataTrigger>
... additional triggers as needed ...
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
이것은 더 큰 공통 뷰 템플릿의 일부일 수 있으며 별도의 뷰 클래스를 만들 필요가 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다