locked
ItemsSource is IEnumerable of UserControls

    Question

  • I have ListView.ItemsSource bound to an IEnumerable<UserControl>. If that's all I do, the ListView displays the list of UserControls just fine. However I need to put some minor formatting around the UserControls when presented in the list. Specifically I need to stick them inside a Border (at least for starters). So philosophically I need to do:

    <DataTemplate>
      <Border>
        {Binding}
      </Border>
    </DataTemplate>

    I've tried <Border Child="{Binding}">. That just creates empty ListView items. Presumably the underlying logic doesn't accept that approach. Is there a XAML solution to this rather then resorting to wrapping the UserControls in Borders in code -- which has the undesirable effect of putting some of the UI formatting in the code rather than in XAML.

    As a secondary but related question... anybody know what property controls the gap between items in a ListView?  I've done everything to eliminate all margins, padding, borders, etc, from the items themselves, but the ListView still wants to put a gap between them.

    Win[Phone] 8.1 Universal App.  Right now I'm looking at the gap being there on the WinPhone, but the VS XAML designer is implying it'll be there under Win also once I get around to looking at that.  I assume the gap is there for tapping using fat fingers, but in my case the items are big enough to use as targets without having extra gap between them.

    Thanks!


    -- kburgoyne

    Saturday, May 30, 2015 7:10 PM

Answers

  • Okay... it appears the answer to my second question (gap between items) was provided by:

    Chris Lovett at here

    Not as simple as just a property change. Requires copying the default ListViewItem style and killing/suppressing the checkbox support.


    -- kburgoyne

    • Marked as answer by kburgoyne Sunday, May 31, 2015 3:07 AM
    Sunday, May 31, 2015 2:36 AM
  • ...and my solution to my first question (item inside border) is resolved when the default ListViewItem style is copied and then the BorderBrush, BorderThickness, Margin, and Padding properties set to control the margin, border, and padding around each item.

    -- kburgoyne

    • Marked as answer by kburgoyne Sunday, May 31, 2015 3:07 AM
    Sunday, May 31, 2015 3:07 AM

All replies

  • Okay... it appears the answer to my second question (gap between items) was provided by:

    Chris Lovett at here

    Not as simple as just a property change. Requires copying the default ListViewItem style and killing/suppressing the checkbox support.


    -- kburgoyne

    • Marked as answer by kburgoyne Sunday, May 31, 2015 3:07 AM
    Sunday, May 31, 2015 2:36 AM
  • ...and my solution to my first question (item inside border) is resolved when the default ListViewItem style is copied and then the BorderBrush, BorderThickness, Margin, and Padding properties set to control the margin, border, and padding around each item.

    -- kburgoyne

    • Marked as answer by kburgoyne Sunday, May 31, 2015 3:07 AM
    Sunday, May 31, 2015 3:07 AM