Есть ли способ программно изменить шаблон Data / ItemTemplate в Silverlight? - PullRequest
2 голосов
/ 15 апреля 2010

У меня есть Listbox, который использует ItemTemplate для отображения изображения. Я хочу иметь возможность изменить размер отображаемого изображения в шаблоне ItemTemplate. С помощью привязки данных я могу изменить ширину, но единственный способ понять, как это сделать, - добавить свойство (скажем, ImageSize) к классу, к которому я привязываю, а затем изменить каждый элемент в коллекции, чтобы получить новый ImageSize. Нет ли способа получить доступ к свойству элемента в этой таблице данных?

* 1003 Е.Г. *

<navigation:Page.Resources>
    <DataTemplate x:Key="ListBoxItemTemplate">            
        <Viewbox Height="100" Width="100">
             <Image Source="{Binding Image}"/>
        </Viewbox>            
    </DataTemplate>        
</navigation:Page.Resources>
<Grid>
    <ListBox ItemTemplate="{StaticResource ListBoxItemTemplate}" ItemSource="{Binding Collection}"/>
</Grid>

Есть ли способ установить ширину и высоту окна просмотра без привязки свойства к каждому элементу в коллекции?

Ответы [ 2 ]

3 голосов
/ 21 апреля 2010

Вы можете использовать привязку элемента к этому. Попробуйте что-то вроде этого:

<UserControl.Resources>        
  <DataTemplate x:Key="ListBoxItemTemplate">            
    <Viewbox Height="{Binding Value, ElementName=slider1}" 
             Width="{Binding Value, ElementName=slider1}">
      <Image Source="{Binding Image}"/>
    </Viewbox>                          
  </DataTemplate>
</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="White">
  <Grid.RowDefinitions>
    <RowDefinition Height="205*" />
    <RowDefinition Height="95*" />
  </Grid.RowDefinitions>
  <ListBox ItemTemplate="{StaticResource ListBoxItemTemplate}"
           ItemSource="{Binding Collection}"/>
  <Slider x:Name="slider1" Value="100" Maximum="250" Grid.Row="1"/>
</Grid>
0 голосов
/ 15 апреля 2010

Если вы знаете размеры, до которых вы будете изменять размеры, вы можете задать несколько различных ItemTemplate s и переключаться между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...