Silverlight 4 - простой шаблон управления - PullRequest
0 голосов
/ 22 октября 2010
    <DataTemplate x:Key="dirtSimple">
        <TextBlock Margin="10,0,0,0" Text="{Binding Path=CurrentBook.Published, StringFormat=d}"></TextBlock>
    </DataTemplate>

    <ControlTemplate x:Key="lbWrapPanelTemplate">
        <StackPanel Orientation="Horizontal" Margin="2" Background="Aqua">
            <ItemsPresenter></ItemsPresenter>
        </StackPanel>
    </ControlTemplate>

...

    <ListBox Template="{StaticResource lbWrapPanelTemplate}" x:Name="bookListBox"  Grid.Row="0" ItemsSource="{Binding Path=BookSource}" ItemTemplate="{StaticResource dirtSimple}"  >
    </ListBox>

Поле со списком отображается правильно, с красивым фоном "Аква", и каждый элемент скучно отображается только с датой.По некоторым причинам, хотя предметы не текут горизонтально.Первоначально я попробовал это с WrapPanel из Silverlight Toolkit, с той же проблемой, но я даже не могу заставить его работать со встроенной StackPanel, поэтому я подозреваю, что что-то упустил.

1 Ответ

1 голос
/ 22 октября 2010

Вы пытаетесь получить поведение, основанное на выборе, которое обеспечивает ListBox? Если нет, используйте ItemsControl (и предоставьте ItemsPanel, как показано ниже).

Причина, по которой он не идет в горизонтальном направлении, заключается в том, что у ItemsPresenter в конечном итоге есть своя панель, в которой он размещает элементы. Он не вставляет каждый элемент отдельно в вашу StackPanel (или WrapPanel), а помещает их в свою собственную панель

То, что вы хотите сделать, это указать значение для ItemsPanel следующим образом:

<ListBox ItemTemplate="{StaticResource dirtSimple}">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...