Изменить свойства шаблона данных списка в коде позади - PullRequest
2 голосов
/ 15 ноября 2010

У меня есть список в XAML согласно приведенному ниже коду.

<ListBox name="myListBox">  
  <ListBox.ItemTemplate>
    <DataTemplate>
       <Image Source="{Binding Path=Image}" Width="175" Height="175" VerticalAlignment="Center" HorizontalAlignment="Center"/>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

Во время выполнения на основе условия я хочу изменить свойства height и width на другое значение, используя кодпозади.Пожалуйста, кто-нибудь может помочь мне в достижении желаемой функциональности.

Большое спасибо

1 Ответ

2 голосов
/ 15 ноября 2010

Я думаю, что самый простой способ добиться этого - связать ширину и высоту изображения с двумя свойствами.Если вы хотите изменить ширину и высоту всех изображений, вы можете использовать два свойства в коде позади, и если вы хотите сделать это по отдельности, просто сделайте то же самое, но связывайтесь со свойствами в элементах коллекции.

<ListBox name="myListBox"> 
    <ListBox.ItemTemplate> 
        <DataTemplate> 
            <Image Source="{Binding Path=Image}"
                   Width="{Binding ElementName=myWindow,
                                   Path=ListBoxTemplateWidth}"
                   Height="{Binding ElementName=myWindow,
                                    Path=ListBoxTemplateHeight}"
                   VerticalAlignment="Center"
                   HorizontalAlignment="Center"/> 
        </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

и в коде позади вы определяете два свойства

private double m_listBoxTemplateHeight;
public double ListBoxTemplateHeight
{
    get
    {
        return m_listBoxTemplateHeight;
    }
    private set
    {
        m_listBoxTemplateHeight = value;
        OnPropertyChanged("ListBoxTemplateHeight");
    }
}
private double m_listBoxTemplateWidth;
public double ListBoxTemplateWidth
{
    get
    {
        return m_listBoxTemplateWidth;
    }
    private set
    {
        m_listBoxTemplateWidth = value;
        OnPropertyChanged("ListBoxTemplateWidth");
    }
}

if (someCondition == true)
{
    ListBoxTemplateHeight = 200;
    ListBoxTemplateWidth = 200;
}

Таким образом, ListBoxItems будет увеличиваться / уменьшаться в размере с шириной / высотой изображений.

...