【问题标题】:DataGrid with templated RowHeader and ColumnHeader in Silverlight在 Silverlight 中具有模板化 RowHeader 和 ColumnHeader 的 DataGrid
【发布时间】:2012-01-19 20:51:27
【问题描述】:

如何使用模板化的 RowHeader、ColumnHeader 和单元格创建网格?

ViewModel 可以有一个用于 RowHeader 项目显示的对象列表,一个用于 ColumnHeader 项目显示的对象列表。基本上可以把它想象成矩阵显示。

可能需要编写一个 ControlTemplate,但没有什么想法。没有太多关于此功能的文档。

有什么想法吗?

【问题讨论】:

    标签: silverlight xaml silverlight-4.0 datagrid


    【解决方案1】:

    您可以为 DataGridColumnHeader 或 DataGridRowHeader 创建样式并将 ContentTemplate 设置为允许绑定 Header 属性的 DataTemplate。为此,您需要一个启用绑定的 IValueConverter。

    标头位于 Controls.Primitives 命名空间中:

    xmlns:dp="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
    

    风格:

            <Style TargetType="dp:DataGridColumnHeader" >
                <Setter Property="ContentTemplate" >
                    <Setter.Value>
                        <DataTemplate>
                            <ContentPresenter Content="{Binding Converter={StaticResource vcBC}}"  />
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
    

    转换器:

    public class BindingConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value.GetType().Name == "Binding")
            {
                ContentControl cc = new ContentControl();
                cc.SetBinding(ContentControl.ContentProperty, value as Binding);
                return cc;
            }
            else return value;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }
    }
    

    转换器实例:

    <yourassembly:BindingConverter x:Key="vcBC"/>
    

    【讨论】:

    • 感谢您的回复,部分有所帮助,但仍然存在很多关于该问题的问题。还在寻找...
    • 好的,所以问你剩下的问题:-)
    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多