2010-05-12 3 views
0

저는 incredibuild와 비슷한 UI로 WPF에서 작업 프로파일 러를 만들려고합니다.WPF에서 프로파일 러 GUI를 만들려면 어떻게해야합니까?

예를 들어 시간을 초과 한 작업은 해당 줄에 스트립으로 표시됩니다. 무슨 뜻인지 볼 수

http://baoz.net/wp-content/2009/06/ib1.png

:에서보세요. 이 문제를 해결하는 가장 좋은 방법은 무엇인지 확신 할 수 없습니까? 내가 Panel 클래스를 오버라이드하여이를위한 커스텀 레이아웃 패널을 만들거나 내 필요에 맞는 기존 컨트롤/라이브러리가있을 수 있습니다. 지금까지 다양한 차트 컨트롤을 살펴 보았지만이 동작을 달성하기 위해 조정할 수 있는지 확실하지 않습니다. 정말 내 검색 범위를 좁히는 데 도움이 잠시 동안 WPF를 사용 해왔다 누군가를 기대하고있다. 어느 쪽이든을 위해 google을 알기 란 정확히 알기가 쉽지 않습니다.

+0

이 스크린 샷의 데이터가 실제로 무엇을 의미하는지 설명 할 수? 마찬가지로, 크기는 가로 위치와 무슨 뜻입니까? 그것은 무엇을 권할지를 아는 데 도움이 될 것입니다. 또한 www.visifire.com은 일반적으로 선호되는 WPF 차트 시스템이지만 차트 컨트롤을 살펴본 결과 이미 그 사실을 알았을 것입니다. – JustABill

답변

1

이 종류의 도표는 절대적으로 사소한 것입니다. 특별한 차트 패키지가 필요하지 않습니다 : 자원에

, 그 폭 이벤트 길이에 바인딩되는 이벤트 표시하는 DataTemplate을 정의 :

<ItemsPanelTemplate x:Key="HorizontalPanel"><DockPanel/></ItemsPanelTemplate> 
:

<DataTemplate TargetType="{x:Type local:Event}"> 
    <Border Width="{Binding EventLength}"> <!-- This sets the width --> 
     <Border Margin="1" Padding="1" StrokeThickness="1" Stroke="Black" 
       Background="{Binding EventColor}"> <!-- Actual border --> 
     <TextBlock Text="{Binding EventDescription}" /> 
     </Border> 
    </Border> 
    </DataTemplate> 

는 또한 수평 항목 패널 템플릿을 정의를

이제 실제 차트를 구축 간단하다 :

<ItemsControl ItemsSource="{Binding CPUs}"> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <DockPanel> 
     <TextBlock Width="100" Text="{Binding Name}" /> <!-- CPU name --> 
     <Rectangle Width="1" Fill="Black" />   <!-- Vertical divider --> 
     <ItemsControl ItemsSource="{Binding Events}" <!-- Events --> 
         ItemsPanel="{StaticResource HorizontalPanel}" /> 
     </DockPanel> 
    </DataTemplate> 
    </ItemsControl.Template> 
</ItemsControl> 

당신이 당신의 이벤트 사이의 간격이있는 경우, 단순히 그들을 대표하는 귀하의 이벤트 컬렉션에 "간격"개체를 추가, 다음 간격에 대한 DataTemplate을 추가 :

<DataTemplate TargetType="{x:Type local:Gap}"> 
    <UIElement Width="{Binding GapWidth}" /> 
</DataTemplate> 
+0

고맙습니다! 내가 부족한 정보에 대해 혼란 스러웠던 것은 그 격차를 해소하는 방법이었습니다. 그러나 그것이 당신이 말하는 것만 큼 단순하다면 나는 행복하지 않습니다. 나는 그것을 즉시 시도 할 것이다. – thehan

+0

모든 것이 잘되었습니다. 나는 심지어 약간의 줌을 추가 할 수 있었다. 도와 주셔서 정말 감사합니다! – thehan

+0

향후 방문객을 위해 데이터 템플릿 선택기를 사용하여 간격과 이벤트 템플릿 중에서 선택해야한다는 사실을 알려 드릴 수 있습니다. – thehan