2010-11-15 11 views
2

J'ai une zone de liste en XAML selon le code indiqué ci-dessous.Modifier les propriétés du modèle de données de la zone de liste dans le code derrière

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

Lors de l'exécution en fonction d'une condition, je veux changer les propriétés height et width à une autre valeur en utilisant le code derrière. S'il vous plaît quelqu'un peut-il me guider dans la réalisation de la fonctionnalité souhaitée.

Merci beaucoup

+0

la hauteur et la largeur de la zone de liste ou de l'élément de zone de liste? –

Répondre

2

Je pense que la meilleure façon d'y parvenir est probablement de lier la largeur et la hauteur de l'image à deux propriétés. Si vous souhaitez modifier la largeur et la hauteur de toutes les images, vous pouvez utiliser deux propriétés dans le code et, si vous voulez être capable de le faire individuellement, faites la même chose en associant les propriétés dans les éléments de la collection.

<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> 

et dans le code derrière vous définissez deux propriétés

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; 
} 

De cette façon, les ListBoxItems augmenteront/diminution de la taille à la largeur/hauteur des images.