DRY-WPF 창 서브 클래 싱

사용자 3557327

DataGrid의 열 (DataContext는 다른 개체의 ObservableCollections가 됨), 일부 레이블의 텍스트 및 단추 클릭 처리기를 제외하고는 매우 유사한 WPF 창이 여러 개 있습니다.

각 창 <DataGrid.Columns>에 대해 DataGrid 일부가 다릅니다. AutoGenerateColumns="False"다른 개체에 대해 다른 열을 사용 하고 표시합니다.

기본 WPF 창을 서브 클래 싱하여 <DataGrid.Columns>코드로 작성하는 대신 각 서브 클래스에 대한 XAML 부분을 작성할 수 있는지 궁금합니다 .

또는 XAML을 계속 사용하면서 WPF에서 DRY 원칙을 준수하기위한 다른 기술은 무엇입니까?

nmclean

데이터 소스에서 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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

레일 서비스의 DRY 싱글 톤 클래스

분류에서Dev

서브 클래 싱 된 LinearLayout 클래스 서브 클래 싱

분류에서Dev

UITableView 서브 클래 싱

분류에서Dev

서브 클래 싱 버튼

분류에서Dev

UIAlertController 서브 클래 싱

분류에서Dev

UICollectionView 서브 클래 싱

분류에서Dev

SCNNode 서브 클래 싱

분류에서Dev

창을 서브 클래 싱 할 때 pyglet에서 콜백을 예약하는 방법

분류에서Dev

창을 서브 클래 싱 할 때 pyglet에서 콜백을 예약하는 방법

분류에서Dev

Swift : tableview에서 SlackTextViewController 서브 클래 싱

분류에서Dev

NSManagedObject의 서브 클래스 서브 클래 싱

분류에서Dev

std :: chrono :: duration 서브 클래 싱

분류에서Dev

RxSwift 서브 클래 싱 모범 사례

분류에서Dev

UIPickerView 서브 클래 싱 및 UIToolbar 추가

분류에서Dev

NSCoder 서브 클래 싱, NSArchiver 재생성

분류에서Dev

파이썬 서브 클래 싱 목록

분류에서Dev

서브 클래 싱 및 제네릭

분류에서Dev

InputStream 및 OutputStream 모두 서브 클래 싱

분류에서Dev

Xamarin Forms-MultiPage 서브 클래 싱

분류에서Dev

MKOverlayRenderer의 적절한 서브 클래 싱

분류에서Dev

Swift 3 서브 클래 싱 OperationQueue

분류에서Dev

QAudioDecoder 용 QIODevice 서브 클래 싱

분류에서Dev

템플릿 서브 클래 싱의 예

분류에서Dev

QStateMachine 서브 클래 싱 및 수정

분류에서Dev

Swift에서 SpriteKit 클래스 서브 클래 싱

분류에서Dev

제네릭 클래스 및 서브 클래 싱 배열

분류에서Dev

개인 생성자로 클래스 서브 클래 싱

분류에서Dev

파이썬 클래스 속성과 서브 클래 싱

분류에서Dev

서브 클래 싱 vs 확장 vs 내부 클래스

Related 관련 기사

뜨겁다태그

보관