none
如何更改GroupStyle中的分组显示名称,问题是用c#代码切换绑定对象的属性问题。 RRS feed

  • 问题

  •  <ListView.GroupStyle>
                                <GroupStyle>
                                    <GroupStyle.ContainerStyle>
                                        <Style TargetType="{x:Type GroupItem}">
                                            <Setter Property="Margin" Value="0,0,0,5"/>
                                            <Setter Property="Template">
                                                <Setter.Value>
                                                    <ControlTemplate TargetType="{x:Type GroupItem}">
                                                        <Expander Background="Transparent" Margin="2,5,2,5" IsExpanded="True" BorderBrush="#FF1975A0" BorderThickness="2">
                                                            <Expander.Header>
                                                                <Grid >
                                                                    <Grid.ColumnDefinitions>
                                                                        <ColumnDefinition />
                                                                        <ColumnDefinition />
                                                                        <ColumnDefinition />
                                                                    </Grid.ColumnDefinitions>
                                                                    <TextBlock  Margin="5,0,0,0" Grid.Column="2" FontWeight="Bold" HorizontalAlignment="Right"  Text="{Binding Path=ItemCount,StringFormat=长度:{0}}"/>
                                                                    <Button Grid.Column="1" HorizontalAlignment="Center" Content="全选" DataContext="{Binding ElementName=groupText,Path=Text}" Click="Button_Click_5"></Button>
                                                                    <TextBlock Grid.Column="0" FontWeight="Bold" x:Name="groupText"  HorizontalAlignment="Left"  Text="{Binding Path=Items[0].myDateTime}" 
                                                                   Width="auto"/>
                                                             
                                                                </Grid>
                                                            </Expander.Header>
                                                            <Expander.Content>
                                                                <ItemsPresenter/>
                                                            </Expander.Content>
                                                        </Expander>
                                                    </ControlTemplate>
                                                </Setter.Value>
                                            </Setter>
                                        </Style>
                                    </GroupStyle.ContainerStyle>
                                </GroupStyle>

    如题,为ListView绑定的数据集合,通过c#代码设置了多个分组的属性PropertyGroupDescription对象,通过点击事件对视图集合的GroupDescriptions属性进行清理,然后再添加,若有值转换器,则绑定值转换器。最后通过Refresh方法进行刷新。这个时候分组切换效果实现了

    只是还有一个问题,就是分组标题切换问题。不知道如何切换,这涉及更换绑定对象的属性的问题,要如何实现。

    显示分组标题的代码是Text="{Binding Path=Items[0].myDateTime}。怎么在c#更换绑定的后台属性?将Text="{Binding Path=Items[0].myDateTime}"的显示效果换成绑定其他的属性的效果,例如更换成Text="{Binding Path=Items[0].name}"。有些分组的标题,还绑定了的值转换器。若有值转换器,在更换绑定对象绑定属性的时候怎么设置与某个值转换器绑定?



    • 已编辑 Trian555 2019年1月30日 7:33
    2019年1月30日 7:27

答案

  • Hi   Trian555, 

    >>显示分组标题的代码是Text="{Binding Path=Items[0].myDateTime}。怎么在c#更换绑定的后台属性?将Text="{Binding Path=Items[0].myDateTime}"的显示效果换成绑定其他的属性的效果,例如更换成Text="{Binding Path=Items[0].name}"。有些分组的标题,还绑定了的值转换器。若有值转换器,在更换绑定对象绑定属性的时候怎么设置与某个值转换器绑定?

    你可以尝试通过代码里面先清楚分组模板,然后通过XamlReader.Parse 将新的分组模板赋予listview。

                lbPersonList.GroupStyle.Clear();
                lbPersonList.GroupStyle.Add(System.Windows.Markup.XamlReader.Parse("<GroupStyle xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><GroupStyle.HeaderTemplate><DataTemplate><TextBlock Text=\"{Binding Name}\"/></DataTemplate></GroupStyle.HeaderTemplate></GroupStyle>") as GroupStyle);
    
    最后绑定新的数据源和分组信息。


    Best Regards,

    Yong Lu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Trian555 2019年2月1日 6:06
    2019年1月31日 3:40
    版主