У меня есть список объектов в модели. Я хочу показать элементы DTO в списке на моих панелях AccordianItem. Модель такая:
public class MyModel
{
public List<AnimalDTO> Items { get; set; }
public MyModel()
{
Items = new List<AnimalDTO>
{
new AnimalDTO() {Title = "Monkey", ImageUri = "Images/monkey.jpg"},
new AnimalDTO() {Title = "Cow", ImageUri = "Images/cow.jpg"},
};
}
}
public class AnimalDTO
{
public string Title { get; set; }
public string LongDescription { get; set; }
public string ImageUri { get; set; }
public string NavigateUri { get; set; }
}
Я хочу показать изображение на фоновом изображении AccordianItems и наложить LongDescription на часть изображения.
Если я жестко закодирую это, я смогу получить изображение в AccordianItem, таким образом...
<layoutToolkit:AccordionItem x:Name="Item2" Header="Item 2" Margin="0,0,10,0" AccordionButtonStyle="{StaticResource AccordionButtonStyle1}" ExpandableContentControlStyle="{StaticResource ExpandableContentControlStyle1}" HeaderTemplate="{StaticResource DataTemplate1}" BorderBrush="{x:Null}" ContentTemplate="{StaticResource CarouselContentTemplate}">
<layoutToolkit:AccordionItem.Background>
<ImageBrush ImageSource="Images/cow.jpg" Stretch="None"/>
</layoutToolkit:AccordionItem.Background>
</layoutToolkit:AccordionItem>
Когда я пробую это с привязкой, такой как <ImageBrush ImageSource="{Binding Path={StaticResource MyContentTemplate.ImageUri}}" Stretch="None"/>
, или если я пытаюсь это сделать с <ImageBrush ImageSource="{Binding Path=Items[0].ImageUri}" Stretch="None"/>
, он выдает XamlParseException.
Редактировать: я могу получить некоторую привязку текста к жестко закодированным изображениям со следующим StaticResource (ПРИМЕЧАНИЕ: я жестко кодирую Items[2], я не уверен, как индексируй это)
<DataTemplate x:Key="CarouselContentTemplate">
<Grid Width="650" Height="420">
<Grid.RowDefinitions>
<RowDefinition Height="0.476*"/>
<RowDefinition Height="0.524*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0"
x:Name="Title"
Text="{Binding Items[2].Title}"
Foreground="Black" FontSize="12"></TextBlock>
<TextBlock Grid.Row="1" Grid.Column="0"
x:Name="LongDescription"
Text="{Binding Items[2].LongDescription}"
TextWrapping="Wrap"FontSize="8"></TextBlock>
</Grid>
</DataTemplate>
Есть ли способ проиндексировать коллекцию Items в DataTemplate? Кроме того, как мне заставить изображение привязываться, а не жестко кодировать их в каждом AccordianItem? Будем признательны за любую помощь в правильном направлении, особенно в том, как связать и наложить текст на изображение.
AccordianItem
относится к типу вашей модели, а не к инструментариюAccordianItem
? Было бы лучше, если бы вы использовали другое имя для вашей модели, чтобы это было ясно. - person AnthonyWJones   schedule 15.03.2010