Group an ItemsControlby a property of itemsource model












1















With this class:



Public Class PageBetModel
Private _name As String

Public Property Name As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property

Private _group As String

Public Property Group As String
Get
Return _group
End Get
Set(ByVal value As String)
_group = value
End Set
End Property
End Class


I want to create an style with an ItemsControl, painting the Name Property,
and grouping by Group property.



<ItemsControl ItemsSource="{Binding Path=Model}" ItemsPanel="{DynamicResource MyPanel}" ItemTemplate="{DynamicResource MyTemplate}"/>

<DataTemplate x:Key="MyTemplate">
<Border MinHeight="100" BorderThickness="0,0,0,2" BorderBrush="#dfe1e0">

<TextBlock x:Name="RadioButtonText" Margin="16,40,16,16" Width="287" Text="{Binding Path=Name}" FontFamily="Arial" FontSize="17" Foreground="#474747" FontWeight="SemiBold" TextWrapping="Wrap" VerticalAlignment="Top" HorizontalAlignment="Left"/>

</Border>
</DataTemplate>


I want to display this simple design but grouping the different names with an Expander by the Group Property.










share|improve this question





























    1















    With this class:



    Public Class PageBetModel
    Private _name As String

    Public Property Name As String
    Get
    Return _name
    End Get
    Set(ByVal value As String)
    _name = value
    End Set
    End Property

    Private _group As String

    Public Property Group As String
    Get
    Return _group
    End Get
    Set(ByVal value As String)
    _group = value
    End Set
    End Property
    End Class


    I want to create an style with an ItemsControl, painting the Name Property,
    and grouping by Group property.



    <ItemsControl ItemsSource="{Binding Path=Model}" ItemsPanel="{DynamicResource MyPanel}" ItemTemplate="{DynamicResource MyTemplate}"/>

    <DataTemplate x:Key="MyTemplate">
    <Border MinHeight="100" BorderThickness="0,0,0,2" BorderBrush="#dfe1e0">

    <TextBlock x:Name="RadioButtonText" Margin="16,40,16,16" Width="287" Text="{Binding Path=Name}" FontFamily="Arial" FontSize="17" Foreground="#474747" FontWeight="SemiBold" TextWrapping="Wrap" VerticalAlignment="Top" HorizontalAlignment="Left"/>

    </Border>
    </DataTemplate>


    I want to display this simple design but grouping the different names with an Expander by the Group Property.










    share|improve this question



























      1












      1








      1








      With this class:



      Public Class PageBetModel
      Private _name As String

      Public Property Name As String
      Get
      Return _name
      End Get
      Set(ByVal value As String)
      _name = value
      End Set
      End Property

      Private _group As String

      Public Property Group As String
      Get
      Return _group
      End Get
      Set(ByVal value As String)
      _group = value
      End Set
      End Property
      End Class


      I want to create an style with an ItemsControl, painting the Name Property,
      and grouping by Group property.



      <ItemsControl ItemsSource="{Binding Path=Model}" ItemsPanel="{DynamicResource MyPanel}" ItemTemplate="{DynamicResource MyTemplate}"/>

      <DataTemplate x:Key="MyTemplate">
      <Border MinHeight="100" BorderThickness="0,0,0,2" BorderBrush="#dfe1e0">

      <TextBlock x:Name="RadioButtonText" Margin="16,40,16,16" Width="287" Text="{Binding Path=Name}" FontFamily="Arial" FontSize="17" Foreground="#474747" FontWeight="SemiBold" TextWrapping="Wrap" VerticalAlignment="Top" HorizontalAlignment="Left"/>

      </Border>
      </DataTemplate>


      I want to display this simple design but grouping the different names with an Expander by the Group Property.










      share|improve this question
















      With this class:



      Public Class PageBetModel
      Private _name As String

      Public Property Name As String
      Get
      Return _name
      End Get
      Set(ByVal value As String)
      _name = value
      End Set
      End Property

      Private _group As String

      Public Property Group As String
      Get
      Return _group
      End Get
      Set(ByVal value As String)
      _group = value
      End Set
      End Property
      End Class


      I want to create an style with an ItemsControl, painting the Name Property,
      and grouping by Group property.



      <ItemsControl ItemsSource="{Binding Path=Model}" ItemsPanel="{DynamicResource MyPanel}" ItemTemplate="{DynamicResource MyTemplate}"/>

      <DataTemplate x:Key="MyTemplate">
      <Border MinHeight="100" BorderThickness="0,0,0,2" BorderBrush="#dfe1e0">

      <TextBlock x:Name="RadioButtonText" Margin="16,40,16,16" Width="287" Text="{Binding Path=Name}" FontFamily="Arial" FontSize="17" Foreground="#474747" FontWeight="SemiBold" TextWrapping="Wrap" VerticalAlignment="Top" HorizontalAlignment="Left"/>

      </Border>
      </DataTemplate>


      I want to display this simple design but grouping the different names with an Expander by the Group Property.







      wpf vb.net datatemplate itemscontrol






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 14 '18 at 15:11









      mm8

      83.1k81831




      83.1k81831










      asked Nov 14 '18 at 9:23









      imjimj

      2081619




      2081619
























          1 Answer
          1






          active

          oldest

          votes


















          1














          Set the ItemsSource to a grouped CollectionViewSource:



          <CollectionViewSource x:Key="cvs" Source="{Binding Path=Model}">
          <CollectionViewSource.GroupDescriptions>
          <PropertyGroupDescription PropertyName="Group" />
          </CollectionViewSource.GroupDescriptions>
          </CollectionViewSource>


          ...and define a GroupStyle that contains an Expander:



          <ItemsControl ItemsPanel="{DynamicResource MyPanel}"
          ItemsSource="{Binding Source={StaticResource cvs}}"
          ItemTemplate="{DynamicResource MyTemplate}">
          <ItemsControl.GroupStyle>
          <GroupStyle>
          <GroupStyle.ContainerStyle>
          <Style TargetType="{x:Type GroupItem}">
          <Setter Property="Template">
          <Setter.Value>
          <ControlTemplate>
          <Expander IsExpanded="True">
          <Expander.Header>
          <TextBlock Text="{Binding Name}" FontWeight="Bold" Foreground="Gray" FontSize="22" VerticalAlignment="Bottom" />
          </Expander.Header>
          <ItemsPresenter />
          </Expander>
          </ControlTemplate>
          </Setter.Value>
          </Setter>
          </Style>
          </GroupStyle.ContainerStyle>
          </GroupStyle>
          </ItemsControl.GroupStyle>
          </ItemsControl>





          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53296756%2fgroup-an-itemscontrolby-a-property-of-itemsource-model%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            Set the ItemsSource to a grouped CollectionViewSource:



            <CollectionViewSource x:Key="cvs" Source="{Binding Path=Model}">
            <CollectionViewSource.GroupDescriptions>
            <PropertyGroupDescription PropertyName="Group" />
            </CollectionViewSource.GroupDescriptions>
            </CollectionViewSource>


            ...and define a GroupStyle that contains an Expander:



            <ItemsControl ItemsPanel="{DynamicResource MyPanel}"
            ItemsSource="{Binding Source={StaticResource cvs}}"
            ItemTemplate="{DynamicResource MyTemplate}">
            <ItemsControl.GroupStyle>
            <GroupStyle>
            <GroupStyle.ContainerStyle>
            <Style TargetType="{x:Type GroupItem}">
            <Setter Property="Template">
            <Setter.Value>
            <ControlTemplate>
            <Expander IsExpanded="True">
            <Expander.Header>
            <TextBlock Text="{Binding Name}" FontWeight="Bold" Foreground="Gray" FontSize="22" VerticalAlignment="Bottom" />
            </Expander.Header>
            <ItemsPresenter />
            </Expander>
            </ControlTemplate>
            </Setter.Value>
            </Setter>
            </Style>
            </GroupStyle.ContainerStyle>
            </GroupStyle>
            </ItemsControl.GroupStyle>
            </ItemsControl>





            share|improve this answer




























              1














              Set the ItemsSource to a grouped CollectionViewSource:



              <CollectionViewSource x:Key="cvs" Source="{Binding Path=Model}">
              <CollectionViewSource.GroupDescriptions>
              <PropertyGroupDescription PropertyName="Group" />
              </CollectionViewSource.GroupDescriptions>
              </CollectionViewSource>


              ...and define a GroupStyle that contains an Expander:



              <ItemsControl ItemsPanel="{DynamicResource MyPanel}"
              ItemsSource="{Binding Source={StaticResource cvs}}"
              ItemTemplate="{DynamicResource MyTemplate}">
              <ItemsControl.GroupStyle>
              <GroupStyle>
              <GroupStyle.ContainerStyle>
              <Style TargetType="{x:Type GroupItem}">
              <Setter Property="Template">
              <Setter.Value>
              <ControlTemplate>
              <Expander IsExpanded="True">
              <Expander.Header>
              <TextBlock Text="{Binding Name}" FontWeight="Bold" Foreground="Gray" FontSize="22" VerticalAlignment="Bottom" />
              </Expander.Header>
              <ItemsPresenter />
              </Expander>
              </ControlTemplate>
              </Setter.Value>
              </Setter>
              </Style>
              </GroupStyle.ContainerStyle>
              </GroupStyle>
              </ItemsControl.GroupStyle>
              </ItemsControl>





              share|improve this answer


























                1












                1








                1







                Set the ItemsSource to a grouped CollectionViewSource:



                <CollectionViewSource x:Key="cvs" Source="{Binding Path=Model}">
                <CollectionViewSource.GroupDescriptions>
                <PropertyGroupDescription PropertyName="Group" />
                </CollectionViewSource.GroupDescriptions>
                </CollectionViewSource>


                ...and define a GroupStyle that contains an Expander:



                <ItemsControl ItemsPanel="{DynamicResource MyPanel}"
                ItemsSource="{Binding Source={StaticResource cvs}}"
                ItemTemplate="{DynamicResource MyTemplate}">
                <ItemsControl.GroupStyle>
                <GroupStyle>
                <GroupStyle.ContainerStyle>
                <Style TargetType="{x:Type GroupItem}">
                <Setter Property="Template">
                <Setter.Value>
                <ControlTemplate>
                <Expander IsExpanded="True">
                <Expander.Header>
                <TextBlock Text="{Binding Name}" FontWeight="Bold" Foreground="Gray" FontSize="22" VerticalAlignment="Bottom" />
                </Expander.Header>
                <ItemsPresenter />
                </Expander>
                </ControlTemplate>
                </Setter.Value>
                </Setter>
                </Style>
                </GroupStyle.ContainerStyle>
                </GroupStyle>
                </ItemsControl.GroupStyle>
                </ItemsControl>





                share|improve this answer













                Set the ItemsSource to a grouped CollectionViewSource:



                <CollectionViewSource x:Key="cvs" Source="{Binding Path=Model}">
                <CollectionViewSource.GroupDescriptions>
                <PropertyGroupDescription PropertyName="Group" />
                </CollectionViewSource.GroupDescriptions>
                </CollectionViewSource>


                ...and define a GroupStyle that contains an Expander:



                <ItemsControl ItemsPanel="{DynamicResource MyPanel}"
                ItemsSource="{Binding Source={StaticResource cvs}}"
                ItemTemplate="{DynamicResource MyTemplate}">
                <ItemsControl.GroupStyle>
                <GroupStyle>
                <GroupStyle.ContainerStyle>
                <Style TargetType="{x:Type GroupItem}">
                <Setter Property="Template">
                <Setter.Value>
                <ControlTemplate>
                <Expander IsExpanded="True">
                <Expander.Header>
                <TextBlock Text="{Binding Name}" FontWeight="Bold" Foreground="Gray" FontSize="22" VerticalAlignment="Bottom" />
                </Expander.Header>
                <ItemsPresenter />
                </Expander>
                </ControlTemplate>
                </Setter.Value>
                </Setter>
                </Style>
                </GroupStyle.ContainerStyle>
                </GroupStyle>
                </ItemsControl.GroupStyle>
                </ItemsControl>






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 14 '18 at 10:38









                mm8mm8

                83.1k81831




                83.1k81831






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53296756%2fgroup-an-itemscontrolby-a-property-of-itemsource-model%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Xamarin.iOS Cant Deploy on Iphone

                    Glorious Revolution

                    Dulmage-Mendelsohn matrix decomposition in Python