Определение столбца Silverlight, полученного из DataGridTemplateColumn - PullRequest
0 голосов
/ 17 февраля 2010

Я изучаю Silverlight (с нуля, я чувствую себя немного как рыба из воды здесь!). Я смотрю на класс DataGrid и играю с пользовательскими шаблонами для столбцов и заголовков столбцов.

Я хочу отобразить сетку, в которой есть коллекция столбцов с небольшим изображением в заголовке (разные изображения для каждого столбца) и значения только для отображения в ячейках, причем значения каждого столбца связаны с различным свойством на связанных данных.

Я кое-что прочитал и заставил работать на один столбец с xaml ниже. То, что я хочу сделать, это связать этот столбец в какой-то столбец многократного использования, а затем просто добавить несколько экземпляров их в моей сетке, указав значения, чтобы определить, какое изображение использовать и какое свойство связывать.

Может ли кто-нибудь помочь мне с некоторыми предложениями? Я использую Silverlight 3.0, кстати.

вот xaml, который я использую для одного столбца:

<data:DataGrid x:Name="_bidGrid" IsReadOnly="true" CanUserResizeColumns="False">
    <data:DataGrid.Columns>
        <data:DataGridTemplateColumn>
            <data:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding <bound property name goes here>}"/>
                </DataTemplate>
            </data:DataGridTemplateColumn.CellTemplate>
            <data:DataGridTemplateColumn.HeaderStyle>
                <Style TargetType="dataprimitives:DataGridColumnHeader">
                    <Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Image Source="<image url goes here>"/>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </data:DataGridTemplateColumn.HeaderStyle>
        </data:DataGridTemplateColumn>
    </data:DataGrid.Columns>
</data:DataGrid>

1 Ответ

1 голос
/ 17 февраля 2010

Объединение фактического col в стиль будет означать, что у вас будет одинаковое изображение для каждого col в сетке, вы можете определить стиль для каждого заголовка diff col, затем, когда вы определяете свои col, вы можете ссылаться на этот стиль, например :

<data:DataGridTemplateColumn HeaderStyle="{StaticResource ProductNameColHeadStyle}"

Полный XAML ниже иллюстрирует это лучше, скопируйте его в новый SL-проект MainPage.xaml и запустите, чтобы увидеть результаты ...

<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 


    xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 
    xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
    xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
    xmlns:System_Windows_Controls_Primitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls" 
    xmlns:visualizationToolkit="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit"
    xmlns:System_Windows_Controls_DataVisualization_Charting_Primitives="clr-namespace:System.Windows.Controls.DataVisualization.Charting.Primitives;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
    xmlns:inputToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" 
    xmlns:dataPrimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"             
    mc:Ignorable="d" Width="400" Height="300">

    <Grid x:Name="LayoutRoot" Background="White">

        <Grid.Resources> 

            <Style x:Key="ProductNameColHeadStyle"  TargetType="dataPrimitives:DataGridColumnHeader">
                <Setter Property="ContentTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <TextBlock Text="prod name image goes here"/>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

            <Style x:Key="ProductDescColHeadStyle"  TargetType="dataPrimitives:DataGridColumnHeader">
                <Setter Property="ContentTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <TextBlock Text="prod description image goes here"/>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>

        </Grid.Resources>




        <data:DataGrid Name="dta" AutoGenerateColumns="False" >

            <data:DataGrid.Columns>

                <data:DataGridTemplateColumn HeaderStyle="{StaticResource ProductNameColHeadStyle}">                    
                    <data:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="Binding to prod name here"></TextBlock>
                        </DataTemplate>
                    </data:DataGridTemplateColumn.CellTemplate>                    
                </data:DataGridTemplateColumn>

                <data:DataGridTemplateColumn HeaderStyle="{StaticResource ProductDescColHeadStyle}">
                    <data:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="Binding to prod desc here"></TextBlock>
                        </DataTemplate>
                    </data:DataGridTemplateColumn.CellTemplate>
                </data:DataGridTemplateColumn>

            </data:DataGrid.Columns>   

        </data:DataGrid>

    </Grid>


</UserControl>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...