PDA

Afficher la version complète : Acceder a un controle encapsulé in style



pascalwick
02/02/2009, 16h06
Bonjour voila je suis confronter a un problème. J'ai un style et dans ce style nous avons encapsuler des controle. Le style et les trigger fonctionne bien. Le résultat du style est bien celui rechercher.

Voici un peu ce que le style fais : Selon le territoire sélectionner on affiche les information de notre contact mais avec une disposition différentes de nos controls.

A savoir la les balise précéder par <jmb:> sont des truc développer par nos développeur. C'est balise ne pose pas de problème.

Le problème est : Je veux accéder aux controle qui sont encapsuler par exemple la ligne en GRAS le controle txtNom1 je voudrais afficher son text dans un messagebox. Comment accéder a ce controle en code behind?

Voici le code du style :


<

Window.Resources>

<Style x:Key="TerritoryStyle" TargetType="{x:Type jmb:View}">

<Setter x:Uid="monSetter" Property="Template">

<Setter.Value>

<ControlTemplate x:Uid="monTemplate" x:Name="monTemplate" TargetType="{x:Type jmb:View}">

<jmb:View x:Uid="monMainView" jmb:ViewItem.LabelPadding="5" jmb:ViewItem.LabelWidth="100"

jmb:ViewItem.LabelHorizontalContentAlignment="Right"

jmb:View.Territory="JMB_FR">

<Button Name="SwitchTerritory" Click="SwitchTerritory_Click">Switch</Button>

<jmb:View x:Uid="blocSaisieJMB_FR" Name="blocSaisieJMB_FR" jmb:ViewItem.LabelWidth="100" jmb:View.Territory="JMB_FR">

<TextBox Name="txtNom1" Text="{Binding Path=Nom}" jmb:ViewItem.LabelContent="Nom" Width="100"></TextBox> C'est a ce controle que je veux accéder en code behind.

<TextBox Name="txtPrenom1" Text="{Binding Path=Prenom}" jmb:ViewItem.LabelContent="Pr,nom" Width="100"></TextBox>

<TextBox Name="txt2emePrenom" Text="{Binding Path=Prenom2}" jmb:ViewItem.LabelContent="2Šme Pr,nom" Width="100"></TextBox>

<TextBox Name="txt3emePrenom" Text="{Binding Path=Prenom3}" jmb:ViewItem.LabelContent="3Šme Pr,nom" Width="100"></TextBox>

</jmb:View>

<jmb:View Name="blocSaisieJMB_ALL" jmb:View.Territory="JMB_ALL">

<jmb:View.ItemsPanel>

<ItemsPanelTemplate>

<StackPanel Orientation="Vertical"/>

</ItemsPanelTemplate>

</jmb:View.ItemsPanel>

<TextBox Name="txtNom2" Text="{Binding Path=Nom}" jmb:ViewItem.LabelContent="Nom :" Width="100"></TextBox>

<TextBox Name="txtPrenom2" Text="{Binding Path=Prenom}" Width="100" ></TextBox>

</jmb:View>

<jmb:View Name="blocSaisieJMB_ESP" jmb:View.Territory="JMB_ESP">

<jmb:View.ItemsPanel>

<ItemsPanelTemplate>

<StackPanel Orientation="Horizontal"/>

</ItemsPanelTemplate>

</jmb:View.ItemsPanel>

<TextBox Name="txtPrenom3" jmb:ViewItem.LabelContent="Pr,nom :" Text="{Binding Path=Prenom}" Width="100"></TextBox>

<TextBox Name="txtNom3" jmb:ViewItem.LabelContent="Nom :" Text="{Binding Path=Nom}" Width="100"></TextBox>

</jmb:View>

</jmb:View>

<ControlTemplate.Triggers>

<Trigger Property="jmb:View.Territory" Value="JMB_FR">

<Setter TargetName="blocSaisieJMB_FR" Property="Visibility" Value="Visible"/>

<Setter TargetName="blocSaisieJMB_ESP" Property="Visibility" Value="Collapsed"/>

<Setter TargetName="blocSaisieJMB_ALL" Property="Visibility" Value="Collapsed"/>

</Trigger>

<Trigger Property="jmb:View.Territory" Value="JMB_ALL">

<Setter TargetName="blocSaisieJMB_FR" Property="Visibility" Value="Collapsed"/>

<Setter TargetName="blocSaisieJMB_ESP" Property="Visibility" Value="Collapsed"/>

<Setter TargetName="blocSaisieJMB_ALL" Property="Visibility" Value="Visible"/>

</Trigger>

<Trigger Property="jmb:View.Territory" Value="JMB_ESP">

<Setter TargetName="blocSaisieJMB_FR" Property="Visibility" Value="Collapsed"/>

<Setter TargetName="blocSaisieJMB_ESP" Property="Visibility" Value="Visible"/>

<Setter TargetName="blocSaisieJMB_ALL" Property="Visibility" Value="Collapsed"/>

</Trigger>

</ControlTemplate.Triggers>

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

</Window.Resources>Voici comment j'affecte mon style a ma jmb:view de ma window


<

jmb:View x:Name="mainView" Style="{StaticResource TerritoryStyle}" jmb:View.Territory="JMB_FR">


</jmb:View>
</Window>

Peut-etre que je n'y suis pas du tout et que mon principe pour faire ce que je voulais ne fais aucun sens. Donc si vous avez des suggestions je suis très réceptif. Mais j'aimerais tous de meme une solution a ma question. Nous sommes en études pour voir comment migrer notre projets vers WPF.

Merci et désolé pour le dérangement.
J'espère que je serais pardonner.

Pascal Wick
Programmeur-Analyste Sr.