WPF, Связывающий с данными stackpanel

Код для обеспечения:

<script language="javascript" type="text/javascript">
document.write("<script language='javascript' type='text/javascript'>function callGeneratedContent() { alert('during'); }<\x2Fscript>");
document.write("<script language='javascript' type='text/javascript' src='before.js'><\x2Fscript>");
document.write("<script language='javascript' type='text/javascript' src='after.js'><\x2Fscript>");
</script>

В before.js:

alert("Before");
callGeneratedContent();

В after.js:

alert("After");

необходимо поместить сгенерированную строку сначала, иначе FF будет жаловаться, потому что это выполняет before.js прежде, чем видеть функциональное определение.

18
задан Dave Clemmer 18 August 2011 в 07:28
поделиться

2 ответа

Julien's answer is correct for your written description, however, looking at your XAML, it appears you are looking for something like the following:

<DataTemplate x:Key="UserDataTemplate">
    <StackPanel>
        <Image Source="User.png"/>
        <Label HorizontalAlignment="Center" Content="{Binding Path=UserName}" />
    </StackPanel>
</DataTemplate>

<ItemsControl x:Name="UserList" ItemTemplate="{StaticResource UserDataTemplate}" >
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

You definately need an ItemsControl (or some derivation of) to bind your source to. Then you can change the the orientation by setting it's items panel (which I believe is a VirtualizingStackPanel with Vertical orientation by default) so just set it to a VirtualizingStackPanel with Horizontal Orientation. Then you can set the ItemsTemplate for each of your items to the layout you desire (an image stacked on top of text bound from your database).

30
ответ дан 30 November 2019 в 06:09
поделиться

По сути, вы хотите использовать элемент управления, способный отображать перечисление объектов. Элементом управления, способным к этому, является класс ItemsControl и все его потомки ( Selector , ListBox , ListView и т. Д.).

Привяжите свойство ItemsSource этого элемента управления к списку нужных вам объектов, а здесь - к списку пользователей, которых вы выбрали из базы данных. Установите ItemTemplate элемента управления на DataTemplate , который будет использоваться для отображения каждого элемента в списке.

Пример кода:

В Resources ] (например, Window.Resources ):

<DataTemplate x:Key="UserDataTemplate">
  <StackPanel Orientation="Horizontal">
    <Image Source="User.png"/>
    <Label HorizontalAlignment="Center" Content="{Binding Path=UserName}" />
  </StackPanel>
</DataTemplate>

В вашем Window / Page / UserControl :

<ItemsControl x:Name="UserList" ItemTemplate="{StaticResource UserDataTemplate}" />

В вашем код позади:

UserList.ItemsSource = ... // here, an enumeration of your Users, fetched from your db
26
ответ дан 30 November 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: