2009-06-04 4 views
10

나는 최근에 메인 컨트롤의 .xaml 파일의 크기를 줄이기 위해 사용자 컨트롤을 사용할 수 있다는 것을 발견했다. WPF가 처음인데 내 앱의 XAML이 매우 길고 빠르며 스크롤하기가 번거롭다는 것을 깨달았습니다.응용 프로그램에서 큰 XAML 파일을 분할하는 가장 쉬운 방법은 무엇입니까?

사용자가이 문제를 해결하는 가장 좋은 방법을 제어합니까 (예 : 별도의 컨트롤 라이브러리에 많은 사용자 컨트롤과 템플릿이 있어야 함)?

XAML은 어떻게 관리합니까?

미리 감사드립니다.

답변

9

개별 컨트롤로 분할하면 개별 xaml 파일의 크기를 줄일 수 있다는 것이 맞습니다. 파일 크기를 줄이는 다른 방법은 ResourceDictionaries을 사용하는 것입니다. 스타일, 템플릿 및 리소스를 별도의 ResourceDictionaries로 분할하면 창 및 컨트롤의 xaml 파일 크기를 크게 줄일 수 있습니다. 스터프가 분리되면 MergedDictionaries 기능을 사용하여 필요한 곳에서 스타일과 템플릿에 액세스 할 수 있습니다. 특정 리소스를 여러 창과 컨트롤에서 사용하는 경우 ResourceDictionary를 App.xaml 리소스에 병합하여 솔루션의 모든 위치에서 사용할 수 있습니다.

개인적으로 필자는 각 XAML 파일을 약 300 줄 이하로 유지하는 것이 좋습니다. 그 후에는 더 나은 방법이 있는지 확인해야합니다. Here은 리소스를 체계적으로 관리하는 방법에 대한 몇 가지 추가 정보 및 팁을 제공합니다.

+0

ResourceDictionaries를 살펴볼 것입니다. 나는 내가 바라 보는 조직의 어떤 형태가 있어야한다는 것을 알았다. 도와 주셔서 정말로 고맙습니다. – stevosaurus

+0

추가 정보 링크가 죽었지 만 [여기] (http://web.archive.org/web/20100629015119/http://groups.google.com.au/group/wpf-disciples/web/wpf-and- xaml-coding-guidelines)을 통해 WayBackMachine에 있습니다. –

1

또한 테마/컨트롤에 대한 스타일을 컨트롤/개인 수준으로 지정하지 말고 theme.xaml에서 직접 스키닝을 처리하면 Xaml 내부에 스타일 정보가 부 풀리지 않게됩니다.

<MyControl Style="{StaticResource myControlStyle}"/>

+0

이것은 현재 사용자 컨트롤로 수행하고 있습니다. 무리 감사! – stevosaurus

1

사용자 컨트롤이 밖으로 코드를 분리 할 수있는 아주 좋은 방법입니다 당신은 단지 Window.xaml에 <MyControl/>가 직접 테마 파일에 MyControl에 그런 식으로 스타일링을 적용하여 피할 수 메인 윈도우. decluttering 외에도 코드를 모듈화하고 코드 섹션에 제한된 인터페이스를 제공하여 유지 보수성을 향상시키고 스파게티 코드를 방지하는 등의 다른 이점도 제공합니다.

이외에도 DataTemplates도 유용 할 수 있습니다. 예를 들어, 입력해야 할 필드가 많고 모든 필드에 레이블이 있다고 가정합니다. 이 경우 두 개의 속성 (레이블 및 해당 필드 값에 대한 속성)으로 클래스를 만들 수 있습니다. 그런 다음 레이블을 TextBlock에 바인딩하고 해당 값을 TextBox에 바인딩하는 해당 클래스의 DataTemplate을 만들 수 있습니다. 모든 레이블이 정렬되도록하려면 Grid SharedSizeScope를 만들면됩니다. 그런 다음 해당 클래스의 ObservableCollection을 만들고 레이블 및 값으로 채우기를 채운 다음 ItemsControl의 ItemsSource를 해당 클래스로 설정할 수 있습니다. 이 초기 배관을 얻은 후에는 데이터 입력 폼을 WinForms에서보다 빠르게 생성 할 수 있습니다.

관련 문제