Я расширяю элемент управления, чтобы иметь возможность повторно использовать его в моем текущем проекте Xamarin. Как часть этого элемента управления, мне нужно создать DataTemplate программно. Я выяснил, что эта часть работает нормально.Как сделать эквивалент {Binding Source} в коде?
В DataTemplate есть надпись. Мне нужно привязать свойство BindingContext Label к {Binding Source}
. Мне нужно привязать свойство Text Label к {Binding Path=Name}
.
Это работает в XAML, но я не хочу копировать его в миллион разных мест в базе кода.
<dxGrid:TemplateColumn FieldName="MyPropertyName"
Caption="MyColumn">
<dxGrid:TemplateColumn.DisplayTemplate>
<DataTemplate>
<Label BindingContext="{Binding Source}"
Text="{Binding Source, Path=MyPropertyName}" />
</DataTemplate>
</dxGrid:TemplateColumn.DisplayTemplate>
Мой расширенный контроль выглядит это прямо сейчас:
public class MyColumn : TemplateColumn
{
public MyColumn()
{
DataTemplate displayTemplate = new DataTemplate(() =>
{
BindingBase textBinding = new Binding(FieldName);
Label label = new Label();
// TODO: Bind BindingContextProperty to {Binding Source}
//label.SetBinding(BindingContextProperty, binding);
label.SetBinding(Label.TextProperty, textBinding);
return new ViewCell
{
View = label
};
});
DisplayTemplate = displayTemplate;
}
}
Я получаю повесился в связывании, потому что я не знаю, как сделать эквивалент {Binding Source}
в код. Любая помощь будет оценена по достоинству.
В случае, если кто задается вопросом, почему этот простой ответ не работает, Юджин комментарии, после просмотра, как OP получил его на работу позже, в [ эквивалентный Xamarin Forums thread] (https://forums.xamarin.com/discussion/62189/how-to-do-the-equivalent-of-binding-source-in-code), который он пропустил, что это находится в DataTemplate. – ToolmakerSteve