2010-08-03 6 views
1

J'ai en XAML comme suit:Comment utiliser DataBinding à travers le code?

<StackPanel Orientation="Horizontal" Margin="0 5 0 0" HorizontalAlignment="Center" VerticalAlignment="Bottom"> 
<TextBox Text="LinkColor" VerticalAlignment="Center" IsReadOnly="True"/> 
<ComboBox x:Name="ColorCombo" MinWidth="180" Margin="5 0 0 0" SelectionChanged="ColorCombo_SelectionChanged"> 
<ComboBox.ItemTemplate> 
    <DataTemplate> 
    <StackPanel Orientation="Horizontal"> 
     <Rectangle Fill="{Binding Key}" VerticalAlignment="Center" Height="10" Width="20"/> 
      <TextBlock Text="{Binding Key}" Margin="5 0 0 0" VerticalAlignment="Center" /> 
    </StackPanel> 
    </DataTemplate> 
</ComboBox.ItemTemplate> 
</ComboBox> 
</StackPanel> 

Cela va créer une étiquette sur le côté droit et une zone de liste déroulante sur le côté droit. La ItemsSource pour zone de liste déroulante viendra du code comme:

ColorCombo.ItemsSource = ColorsDictionary; 

Ici colorsdictionary est définie comme:

Dictionary<string, Color> ColorsDictionary = new Dictionary<string, Color>(); 

Mais maintenant, je suis en train d'ajouter combo et l'ensemble ItemTemplate par le code. Mais je ne comprends pas comment faire (lier les données) par le code, n'importe qui peut m'aider?

+0

Bienvenue dans SO, veuillez prendre quelques minutes pour lire la FAQ et la documentation de Markdown (un synoptique utile est disponible dans la marge de droite lors de la modification d'une question). – AnthonyWJones

Répondre

0

Pour répondre à votre question, vous pouvez créer un Binding programatically comme ceci: -

TextBlock tb = new TextBlock; 
tb.SetBinding(TextBlock.TextProperty, new Binding("Key")); 

Cependant ce n'est pas vraiment très utile pour vous.

Le DataTemplate ne peut pas être créé dans le code de la manière ci-dessus. La seule façon de créer un DataTemplate par programme est de créer une chaîne Xaml (peut-être à l'aide de XDocument), puis d'utiliser XamlReader pour charger le Xaml généré. Êtes-vous vraiment sûr de devoir faire tout cela par programmation?

+0

Oui, j'ai besoin de faire tous ces programmes. Disons que si je n'ai pas besoin de le faire, pouvez-vous me dire comment référencer le Datatemplate défini dans le Xaml dans Code? Je ne suis pas capable d'accéder aux ressources définies dans l'App/xaml – padmavathi

+0

@padmavathi: Je ne suis pas sûr de comprendre votre question supplémentaire, vous pouvez accéder au 'DataTemplate' dans votre Xaml avec' ColorCombo.ItemsTemplate' mais je ne pense pas ça t'aide. – AnthonyWJones

Questions connexes