Как использовать DataBinding через код позади? - PullRequest
1 голос
/ 03 августа 2010

У меня в xaml следующее:

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

Это создаст надпись справа и поле со списком справа.Itemssource для поля со списком будет исходить из кода как:

ColorCombo.ItemsSource = ColorsDictionary;

Здесь цветовой словарь определяется как:

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

Но теперь я пытаюсь добавить комбо и весь шаблон элемента черезкод.Но я не понимаю, как это сделать (связать данные) с помощью кода, кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 03 августа 2010

Чтобы ответить на ваш вопрос, вы можете создать Binding программно следующим образом: -

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

Однако это не очень полезно для вас.быть создан в коде, как описано выше.Единственный способ построить DataTemplate программно - создать строку Xaml (возможно, с помощью XDocument), а затем использовать XamlReader для загрузки сгенерированного Xaml.Вы действительно уверены, что вам нужно делать все это программно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...