У меня есть Listbox, у которого есть несколько datatemplates для его элементов. Пакет данных выбирается с использованием конвертера и интерпретирует коллекцию объектов ListBox.Silverlight задает путь свойства в конверторе?
Внутри конвертера я пытаюсь связать свойство из datacontext (вне lisbox) с элементом управления TextBox элемента datatemplate.
ListBox:
<telerik:RadListBox
x:Name="listBox2"
ItemsSource="{Binding MyCollection, Mode=TwoWay}"
VerticalAlignment="Top" Height="400">
<telerik:RadListBox.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}"
ContentTemplate="{Binding Converter={StaticResource myTestConverter}, ConverterParameter={StaticResource myViewModel}}" />
</DataTemplate>
</telerik:RadListBox.ItemTemplate>
</telerik:RadListBox>
DataTemplate:
<DataTemplate x:Key="TestResource1">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding propertyLabel}"
FontStyle="Italic" Width="120" />
<TextBox x:Name="valueField"
FontSize="12" Width="50"
FontWeight="Bold" />
</StackPanel>
</DataTemplate>
Внутри метода новообращенного конвертера:
_dt = Application.Current.Resources["TestResource1"] as DataTemplate;
var context = _dt.LoadContent();
var ctrl = FindControlByType<TextBox>(context, "valueField");
Binding binding = new Binding("DataContext.Value1");
binding.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor) { AncestorType = typeof(MainPage) };
TextBox txtBox = ctrl as TextBox;
BindingOperations.SetBinding(txtBox, TextBox.TextProperty, binding);
Это doesen't работа. Любая идея, что я делаю неправильно?
Спасибо.
Привет, _dt.LoadContent() работает отлично, моя проблема в том, что привязка «DataContext.Value1» не выбрана. Я попробую ваше предложение создать динамическую базу данных динамически. Может быть, это сработает. Спасибо за ваш ответ. – asuciu
Silverlight вызывает LoadContent(), а возвращаемые значения помещаются в визуальное дерево. Когда вы вызываете LoadContent, если вы не поместили его в визуальное дерево, вы не увидите никаких результатов. –
Я думаю, что мы что-то здесь. У меня есть относительный источник в моей привязке, который выглядит так: string str = @ " TextBlock Text = "" {Binding propertyLabel} "" /> "; но я получаю эту ошибку mesage: Не удалось создать «System.Type» из текста «local: MainPage. Если я привяжусь к нормальному свойству, он отлично работает. –
asuciu