我希望在WPF中创建一个任务分析器,其UI类似于incredibuild。
例如,定时任务在各自的行上显示为条带。看看:
http://baoz.net/wp-content/2009/06/ib1.png
看看我的意思。我不确定解决这个问题的最佳方法是什么?我是否应该覆盖为您创建自定义布局面板的Panel类,或者是否有适合我需要的现有控件/库。到目前为止,我已经看过各种图表控件,但我不确定是否可以通过调整来实现这种行为。我真的希望有人一直使用WPF来帮助我缩小搜索范围。要知道google的内容并不容易:)
答案 0 :(得分:1)
在WPF中,这种图表绝对是微不足道的。不需要特殊的图表包:
在您的资源中,定义一个DataTemplate,用于显示宽度绑定到事件长度的事件:
<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>
还定义水平项面板模板:
<ItemsPanelTemplate x:Key="HorizontalPanel"><DockPanel/></ItemsPanelTemplate>
现在你的实际图表很容易构建:
<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>
如果事件之间存在间隙,只需在“事件”集合中添加“Gap”对象即可表示它们,然后为间隙添加DataTemplate:
<DataTemplate TargetType="{x:Type local:Gap}">
<UIElement Width="{Binding GapWidth}" />
</DataTemplate>