就我個人而言(假設數據在某種數據庫中)託管在某種ItemsControl中的那些行。 ItemsControl將綁定到Items的集合。
如果我有一點餘地,我會使它成爲一個普通的舊列表框,並自定義項目的樣式)。最後的條形圖部分應該很容易實現,方法是將矩形的寬度綁定到坡度屬性,或者將其作爲所在容器寬度的百分比應用。
所以我會有一個主題類(由數據源創建)具有以下幾個屬性: 由TextBlock表示的名稱(例如「Times Tables」) 等級(例如52%)由綁定到屬性的矩形表示,該矩形將該值乘以矩形所在網格的寬度 由另一個文本塊表示的動作(例如「重複」)。
我會在稍後發表一個例子。
例
行,所以該窗口中有一個非常簡單的佈局,並在其列表框的網格。列表框綁定到我在Expression Blend中設置的設計時數據源。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TreeViewMFagic"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
x:Class="MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Grid x:Name="LayoutRoot" MouseRightButtonDown="ShowContext" DataContext="{Binding Source={StaticResource dsSubjects}}">
<ListBox ItemTemplate="{DynamicResource ItemTemplate}" ItemsSource="{Binding Collection}" HorizontalContentAlignment="Stretch"/>
</Grid>
</Window>
ItemTemplate中我把App.xaml中的資源庫中,因爲我喜歡讓我的窗口和用戶控件XAML文件非常乾淨和使用資源字典儘可能保持的東西的方式進行。無論如何,下面是ItemTemplate。
<DataTemplate x:Key="ItemTemplate">
<Grid Height="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.029*"/>
<ColumnDefinition Width="0.67*"/>
<ColumnDefinition Width="0.168*"/>
<ColumnDefinition Width="0.133*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding SubjectName}" VerticalAlignment="Bottom" d:LayoutOverrides="Width" Grid.ColumnSpan="1" Margin="0" Grid.Column="1"/>
<TextBlock Text="{Binding Action}" VerticalAlignment="Top" d:LayoutOverrides="Width, GridBox" Grid.ColumnSpan="1" Grid.Column="3" Margin="0"/>
<Border Grid.ColumnSpan="1" Grid.Column="2" Margin="0" d:LayoutOverrides="Height" Background="#A3000000" CornerRadius="5" Width="{Binding PercentCorrect}" HorizontalAlignment="Left" >
<TextBlock Text="{Binding PercentCorrect}" HorizontalAlignment="Center"/>
</Border>
<TextBlock TextWrapping="Wrap" Text="{Binding Number}" d:LayoutOverrides="Width, Height"/>
</Grid>
</DataTemplate>
及成品看起來是這樣的:
現在我騙一點在這裏。我將邊界元素的寬度直接限制爲百分比。如果有更多時間來解決這個問題,我可能會創建一個ViewModel,併爲陰影部分和非陰影部分添加了高達100%的值。然後綁定一個網格的列寬,我將邊框放入這些值中以獲得真實百分比。無論如何,這是一個起點。
添加資料 –