我正在创建一个复杂的报告,几乎看起来像在这里image如何实现在Silverlight
对于此所示的工作使用ItemControl我已创建一个集合,其中我将存储在复杂的UI所有的描述及其相应的收视率。 这个集合然后我绑定到一个ItemControl。该集合将根据标准从数据库中提取。 现在我的问题是如何将单个ItemControl分段或分开,看起来像图中所示。我应该使用多个集合,然后绑定到不同的ItemControl?我可以使用多个数据网格吗?
我出来的想法...任何建议/例子非常感谢。
我正在创建一个复杂的报告,几乎看起来像在这里image如何实现在Silverlight
对于此所示的工作使用ItemControl我已创建一个集合,其中我将存储在复杂的UI所有的描述及其相应的收视率。 这个集合然后我绑定到一个ItemControl。该集合将根据标准从数据库中提取。 现在我的问题是如何将单个ItemControl分段或分开,看起来像图中所示。我应该使用多个集合,然后绑定到不同的ItemControl?我可以使用多个数据网格吗?
我出来的想法...任何建议/例子非常感谢。
当然可以。将每个块(如数学,艺术教育等)视为一个项目,然后您只需要处理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>
可惜我不能告诉你什么样的最终结果了看起来像一个形象,但我希望这些指针可以设置你跟踪你的非常类似的问题
我会在这里... – 2014-09-12 06:53:39
没有汗水,只是为每个类别 - 数学,艺术等收集每个都是自己的ItemsControl(或HeaderedItemsControl)使您的ItemTemplate看起来像一排左将文本块绑定到您的描述的显示名称,将您的值绑定到您的单选按钮组或复选框或您希望用于1-5级选项的任何内容完成。或者,如果它们不是动态的东西,只需将其全部构建为静态并相应绑定即可。 – 2014-09-10 19:46:57