Telerik Silverlight RadPanelBar分层数据模板

3

我需要使用Telerik PanelBar来显示以下布局。

RadPanelBar 模板

使用下面的代码,我已经能够实现除了每个面板中的92%之外的所有内容。

XAML:

<UserControl.Resources>
    <DataTemplate x:Key="PanelBarItemTemplate">
        <Grid x:Name="grdCategory" ShowGridLines="True">
            <Grid.RowDefinitions>
                <RowDefinition Height="30"></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60*"></ColumnDefinition>
                <ColumnDefinition Width="40*"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Grid x:Name="grdSubCategory" Grid.Column="0" Style="{StaticResource CategoryLeftStyle}" >
                <Grid.RowDefinitions>
                    <RowDefinition Height="20"></RowDefinition>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="50*"></ColumnDefinition>
                    <ColumnDefinition Width="25*"></ColumnDefinition>
                    <ColumnDefinition Width="25*"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding CategoryTitle}" Grid.Row="0" Grid.Column="0"/>
                <HyperlinkButton Grid.Row="0" Grid.Column="1" Style="{StaticResource DetailLinkStyle}" Content="Details" Click="Home_Click"></HyperlinkButton>
                <TextBlock Text="{Binding Score}" Grid.Row="0" Grid.Column="2"/>
            </Grid>
            <TextBlock Text="92%" Grid.Column="1" Grid.Row="0" Grid.RowSpan="2" FontSize="32" FontWeight="Bold"/>
        </Grid>
    </DataTemplate>

    <telerik:HierarchicalDataTemplate x:Key="PanelBarHeaderTemplate"
                                ItemsSource="{Binding SubReports}"
                                ItemTemplate="{StaticResource PanelBarItemTemplate}">
        <TextBlock Text="{Binding CategoryTitle}" />
    </telerik:HierarchicalDataTemplate>

</UserControl.Resources>

<Grid x:Name="LayoutRoot">
    <telerik:RadPanelBar x:Name="radPanelBar" 
                            ItemTemplate="{StaticResource PanelBarHeaderTemplate}"
                            IsSingleExpandPath="False" >
    </telerik:RadPanelBar>
</Grid>

在我提供的XAML.CS文件中,我已经提供了ItemsSource。有人能帮帮我吗?

1
我认为RadPanelBar不能“开箱即用”地实现你想要的功能。你可以在http://www.telerik.com/community/forums.aspx的Telerik论坛上提问,或许能得到那些实际编写Telerik控件的人的帮助。 - Luke Woodward
2个回答

0

所有的代码对于单个项目都可以完美地工作,但是要将92%相对于这些项目放置(略微超出子项目范围),您还需要修改RadPanelBar的ItemContainerStyle。最简单的方法是在Blend中提取它,然后查找名为ItemsContainer的PanelBarItemTopLevelTemplate下的部分。这是一个有点粗糙的版本,但我在我的项目上创建了一个名为CalcInt的公共属性,用于计算SubReport项目上的属性之和,因此可以从基本项目级别进行绑定。我的修改后的代码如下:

                <Grid x:Name="ItemsContainer" Grid.Row="1" Visibility="Collapsed">
                <telerik:LayoutTransformControl x:Name="transformationRoot">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <ItemsPresenter/>
                        <TextBlock Text="{Binding CalcInt}" FontSize="48" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" />
                    </Grid>                     
                </telerik:LayoutTransformControl>
            </Grid>

我基本上将它从仅包含ItemsPresenter更改为带有一些布局的网格,以显示我的超大TextBlock。

如果您需要代码示例或有任何其他问题,请随时在Twitter上联系我-@EvanHutnick。

干杯!

- Evan


0

你好,我认为你需要定义一个转换器:IValueConverter,并将其绑定到标签上,这样你就可以计算百分比了。 Mario


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接