使用指定的平铺范围将多种类型的集合绑定到RadTileView

时间:2017-05-11 08:46:13

标签: c# wpf xaml telerik

我正在尝试使用Telerik for WPF创建视图。单击按钮后,View应显示在VM中加载的集合。集合中的每个元素都继承自基类:

public class BindableProfileData : BindableBase
{

    private ProfileItem _profileModel;
    private BindableDPDataItem _dataModel;

    public int Row
    {
        get { return _profileModel.DrawingSettings.Row; }
    }

    public int Column
    {
        get
        {
            return _profileModel.DrawingSettings.Column;
        }
    }

    public int RowSpan
    {
        get { return _profileModel.DrawingSettings.RowSpan; }
    }



    public int ColumnSpan
    {
        get { return _profileModel.DrawingSettings.ColumnSpan; }
    }

}

所以例如在集合中可能会出现

的对象
BarContainer : BindableProfileData {}

现在提供我创建该视图的内容:

<Grid>
  <FrameworkElement.Resources>
        <DataTemplate x:Key="ItemTemplate" >
            <TextBlock Text="{Binding Name}" />
        </DataTemplate>

        <DataTemplate x:Key="ContentTemplate">
            <StackPanel>
                <TextBlock Text="{Binding Row, StringFormat='Row: {0}'}"/>
                <TextBlock Text="{Binding Column, StringFormat='Column: {0}'}"/>
                <TextBlock Text="{Binding RowSpan, StringFormat='RowSpan: {0}'}"/>
                <TextBlock Text="{Binding ColumnSpan, StringFormat='ColumnSpan: {0}'}"/>
            </StackPanel>
        </DataTemplate>
    </FrameworkElement.Resources>
    <Grid>
        <telerik:RadTileView x:Name="xTileView"
                         ItemTemplate="{StaticResource ItemTemplate}"
                         ContentTemplate="{StaticResource ContentTemplate}"
                         ItemsSource="{Binding SelectedCategory}"
                         IsAutoScrollingEnabled="True"
                         ColumnWidth="500"
                         RowHeight="300">

            <telerik:RadTileView.ItemsPanel>
                <ItemsPanelTemplate>
                    <controlls:MultipleRowsAndColumnsPanel RowsCount="4" ColumnsCount="3"/>
                </ItemsPanelTemplate>
            </telerik:RadTileView.ItemsPanel>
            <telerik:RadTileView.ItemContainerStyle>
                <Style TargetType="telerik:RadTileViewItem">
                    <Setter Property="controlls:TileViewAttachedProperties.Row" Value="{Binding Row}"/>
                    <Setter Property="controlls:TileViewAttachedProperties.Column" Value="{Binding Column}"/>
                    <Setter Property="controlls:TileViewAttachedProperties.RowSpan" Value="{Binding RowSpan}"/>
                    <Setter Property="controlls:TileViewAttachedProperties.ColumnSpan" Value="{Binding ColumnSpan}"/>
                </Style>
            </telerik:RadTileView.ItemContainerStyle>
        </telerik:RadTileView>
    </Grid>
</Grid>

使用来自telerik指南的助手(MultipleRowsAndColumnsPanelTileViewAttachedProperties

我有两个问题。首先是为什么在收集更改后不会出现视图。

当我削减:`

<telerik:RadTileView.ItemsPanel>
                <ItemsPanelTemplate>
                    <controlls:MultipleRowsAndColumnsPanel RowsCount="4" ColumnsCount="3"/>
                </ItemsPanelTemplate>
            </telerik:RadTileView.ItemsPanel>

` 从代码和粘贴它(Visual Studio编辑和运行)视图出现只是我想要它。所以它看起来像ItemsPanel没有对集合变化作出反应,但是如何修复呢? 第二个问题如何为集合中的不同类指定不同的模板。我发现了类似的post,但我不知道如何使用RadViewTableItem,因为它有两个元素(ItemTemplate和ContentTemplate),通常在RadTileView中指定。

任何建议对我都非常有帮助。谢谢:))

0 个答案:

没有答案