0

我正在创建一个复杂的报告,几乎看起来像在这里image如何实现在Silverlight

对于此所示的工作使用ItemControl我已创建一个集合,其中我将存储在复杂的UI所有的描述及其相应的收视率。 这个集合然后我绑定到一个ItemControl。该集合将根据标准从数据库中提取。 现在我的问题是如何将单个ItemControl分段或分开,看起来像图中所示。我应该使用多个集合,然后绑定到不同的ItemControl?我可以使用多个数据网格吗?

我出来的想法...任何建议/例子非常感谢。

+0

没有汗水,只是为每个类别 - 数学,艺术等收集每个都是自己的ItemsControl(或HeaderedItemsControl)使您的ItemTemplate看起来像一排左将文本块绑定到您的描述的显示名称,将您的值绑定到您的单选按钮组或复选框或您希望用于1-5级选项的任何内容完成。或者,如果它们不是动态的东西,只需将其全部构建为静态并相应绑定即可。 – 2014-09-10 19:46:57

回答

0

当然可以。将每个块(如数学,艺术教育等)视为一个项目,然后您只需要处理ItemsCollection。创建一个样式来呈现该集合中的每个项目,以及另一个样式来呈现您的区块中的每个属性(这也将包含一些东西的集合)。

一个例子,我有类似的东西, 。包括标题,复选框数目不同的每一个描述可能有不同数量的这些块的太

在我看来,这显示这些块,我的XAML看起来是这样的:

<ScrollViewer VerticalScrollBarVisibility="Visible" MaxHeight="100"> 
    <ItemsControl ItemsSource="{Binding FeatureFlags, Mode=TwoWay}" Style="{StaticResource FlagGroupsAndFlagsItemsControlStyle}" /> 
</ScrollViewer> 

然后,我有一个资源字典中定义的ItemsControl的样式...

<Style x:Key="FlagGroupsAndFlagsItemsControlStyle" TargetType="ItemsControl"> 
     <Setter Property="Width" Value="Auto" /> 
     <Setter Property="ItemTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <Grid x:Name="FlagListGrid"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto" /> 
          <RowDefinition Height="*" /> 
         </Grid.RowDefinitions> 

         <TextBox Grid.Row="0" Width="{Binding Width, ElementName=FlagListGrid, Mode=OneWay}" IsReadOnly="True" Text="{Binding Name}" /> 
         <ListBox Grid.Row="1" Width="{Binding Width, ElementName=FlagListGrid, Mode=OneWay}" ItemsSource="{Binding Flags}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
           Style="{StaticResource FlagsListBoxItemsStyle}" Background="{Binding IsOptional, Converter={StaticResource YNToOptionalBackgroundColour}}"/> 
        </Grid> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

然后对内的物品一个样式模板列表框...

<Style x:Key="FlagsListBoxItemsStyle" TargetType="ListBox"> 
     <Setter Property="ItemsPanel"> 
      <Setter.Value> 
       <ItemsPanelTemplate> 
        <toolkit:WrapPanel Width="{Binding Width, ElementName=FlagListGrid, Mode=OneWay}" Orientation="Horizontal" ScrollViewer.HorizontalScrollBarVisibility="Disabled" /> 
       </ItemsPanelTemplate> 

      </Setter.Value> 
     </Setter> 
     <Setter Property="ItemTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <CheckBox Width="20" Height="18" VerticalAlignment="Top" IsChecked="{Binding IsSelected, Mode=TwoWay}" /> 
         <TextBlock Width="180" MinHeight="18" VerticalAlignment="Center" Text="{Binding Description}" TextWrapping="Wrap" /> 
        </StackPanel> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

可惜我不能告诉你什么样的最终结果了看起来像一个形象,但我希望这些指针可以设置你跟踪你的非常类似的问题

+0

我会在这里... – 2014-09-12 06:53:39

相关问题