Привязка в поведении к текстовому тексту таблицы данных в серебряном свете - PullRequest
1 голос
/ 09 февраля 2012

У меня есть шаблон данных:

  <Style x:Key="SalesmanDestinyReportListBoxStyle" TargetType="ListBox">
            <Setter Property="ItemsPanel">
                <Setter.Value>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal" />
                    </ItemsPanelTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListBox">
                        <ItemsPresenter />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="ItemTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <telerik:RadGridView x:Name="grdSalesmanDestinyReport" Width="180" SelectionMode="Single" IsReadOnly="False" IsFilteringAllowed="True"
                     VerticalAlignment="Stretch" RowIndicatorVisibility="Collapsed" HorizontalAlignment="Stretch"
                     CanUserDeleteRows="False" CanUserInsertRows="False" CanUserReorderColumns="False" ItemsSource="{Binding Scores}" AutoGenerateColumns="False">
                           <i:Interaction.Behaviors>
                                <Binding:ColumnGroupsBehavior>
                                    <Binding:ColumnGroupsBehavior.CommonHeaders>
                                        <Binding:CommonHeader StartColumnIndex="0" Caption="{Binding Path=DataContext.SalesmanName,ElementName=grdSalesmanDestinyReport}" ColumnSpan="3" />
                                    </Binding:ColumnGroupsBehavior.CommonHeaders>
                                </Binding:ColumnGroupsBehavior>
                            </i:Interaction.Behaviors>
                            <telerik:RadGridView.Columns>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding Current}" IsReadOnly="True"
                             Header="{Binding Current}" Width="60">
                                    <telerik:GridViewDataColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding Current}">

                                            </TextBlock>
                                        </DataTemplate>
                                    </telerik:GridViewDataColumn.CellTemplate>
                                </telerik:GridViewDataColumn>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding Destiny}" IsReadOnly="True"
                             Header="{Binding Current}" Width="60">
                                    <telerik:GridViewDataColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding Destiny}">

                                            </TextBlock>
                                        </DataTemplate>
                                    </telerik:GridViewDataColumn.CellTemplate>
                                </telerik:GridViewDataColumn>

                                <telerik:GridViewDataColumn DataMemberBinding="{Binding Best}" IsReadOnly="True"
                             Header="{Binding Current}" Width="60">
                                    <telerik:GridViewDataColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding Best}">

                                            </TextBlock>
                                        </DataTemplate>
                                    </telerik:GridViewDataColumn.CellTemplate>
                                </telerik:GridViewDataColumn>

                            </telerik:RadGridView.Columns>
                        </telerik:RadGridView>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>

вот исходный класс:

public class SalesmanDestinyReport
    {
        [DataMember]
        public List<Score> Scores { get; set; }

        [DataMember]
        public string SalesmanName { get; set; }
    }

и у меня проблема с этим фрагментом кода:

                       <i:Interaction.Behaviors>
                            <Binding:ColumnGroupsBehavior>
                                <Binding:ColumnGroupsBehavior.CommonHeaders>
                                    <Binding:CommonHeader StartColumnIndex="0" Caption="{Binding Path=DataContext.SalesmanName,ElementName=grdSalesmanDestinyReport}" ColumnSpan="3" />
                                </Binding:ColumnGroupsBehavior.CommonHeaders>
                            </Binding:ColumnGroupsBehavior>
                        </i:Interaction.Behaviors>

Проблема в том, что я не могу передать свойство SalesmanName в

   <Binding:CommonHeader StartColumnIndex="0" Caption="{Binding Path=DataContext.SalesmanName,ElementName=grdSalesmanDestinyReport}" ColumnSpan="3" />

Я думаю, что нет необходимости объяснять, что такое CommonHeader, потому что проблема, которую я считаю, лежит в другом месте, но на всякий случай:

http://blogs.telerik.com/pavelpavlov/posts/09-12-04/adding-additional-power-to-radgridview-for-silverlight-with-attached-behaviors.aspx

Что мне нужно изменить в объявлении привязки для отображения SalesmanName?

1 Ответ

1 голос
/ 13 февраля 2012

С нуля - Silverlight 4 не поддерживает привязки в установщиках стилей (эта функция теперь доступна в SL5). Для SL4 есть обходной путь: SetterValueBindingHelper .

...