2011-08-12 61 views
0

我試圖在屏幕上顯示類似等級方案。如何在文檔查看器中顯示方案?

enter image description here

我做到了被繪製一些行定義和列的網格,積累一些堆疊面板(內部有一些矩形)與該行中設置的第一溶液。但我不喜歡那個想法。

我正在使用幾個bucles,我想在文檔查看器中顯示。 Althoug我可以想象我可以創建一個更容易的方案。

更新1:

在這一刻,我已經得到了其中包含的屬性的類:

主旨名稱:字符串

IsCorrect:布爾

與他人財物,但他們現在不重要。然後,我全部列入清單。我不知道這是否是有用的用戶LINQ功能組由主旨名稱並獲得它的平均得分:

Classify elements from a list to another classification with average

但我真的可以在控制利率。

回答

1

就我個人而言(假設數據在某種數據庫中)託管在某種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> 

及成品看起來是這樣的:

Subject List

現在我騙一點在這裏。我將邊界元素的寬度直接限制爲百分比。如果有更多時間來解決這個問題,我可能會創建一個ViewModel,併爲陰影部分和非陰影部分添加了高達100%的值。然後綁定一個網格的列寬,我將邊框放入這些值中以獲得真實百分比。無論如何,這是一個起點。

+0

添加資料 –