Archive

Posts Tagged ‘FindAncestor’

Utiliser un ancêtre comme source du binding est possible en Silverlight 5

La version Beta 1 de Silverlight 5 sortie il y a quelques jours nous permet enfin de spécifier comme source du binding un des ancêtres d’un élément. Dans les versions de Silverlight 3 et 4, seuls les modes Self et TemplateParent étaient supportés alors qu’en WPF nous avons en plus de ces deux modes deux autres qui sont PreviousData et FindAncestor (qui nous permet de spécifier comme source du binding un ancêtre du contrôle). Au fil des développements le besoin de spécifier un ancêtre comme source se faisait de plus en plus sentir et différentes méthodes de controunement avaient déjà été mises en place par des développeurs. Maintenant plus besoin de ces méthodes, SL5 permet de faire cela comme dans WPF.
L’exemple de code suivant utilise comme source du binding le contrôle StackPanel qui représente un des ancêtres du bouton sur lequel s’effectue le binding :

<UserControl x:Class="SilverlightApplication11.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <StackPanel x:Name="LayoutRoot" Background="White" Tag="Tag from StackPanel">
        <Rectangle Height="50" Fill="Green" x:Name="myRectangle" />
        <Button Content="{Binding Path=Tag, RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1, AncestorType=StackPanel}}" />
    </StackPanel>
</UserControl>

Bien que le mode FindAncestor soit maintenant présent, le mode PreviousData (très rarement utilisé dans WPF d’ailleurs) n’est pas encore présent dans cette béta de Silvelright 5.

Catégories :Silverlight Étiquettes : , ,
%d blogueurs aiment cette page :