Другой пост описывает, как получить доступ к кодовой области переменная в XAML.
Однако я хотел бы получить доступ к переменной в codebehind object из XAML. Объект codebehind, называемый FeedData , объявлен как свойство зависимости типа FeedEntry . Этот класс является просто контейнерным классом со свойствами string и datetime.
Свойство Codebehind определено так:
public FeedEntry FeedData
{
get { return (FeedEntry)GetValue(FeedDataProperty); }
set { SetValue(FeedDataProperty, value); }
}
public static readonly DependencyProperty FeedDataProperty =
DependencyProperty.Register("FeedData", typeof(FeedReaderDll.FeedEntry), typeof(FeedItemUserControl),
new FrameworkPropertyMetadata(new FeedEntry(){ Title="Hi!", Published=DateTime.Now }));
В XAML я делаю это, что не работает:
<UserControl x:Class="FeedPhysics.UserControls.FeedItemUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="40" Width="200"
Background="Blue"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
x:Name="xRoot">
<StackPanel>
<TextBlock Text="{Binding Title}" Foreground="White"/>
<TextBlock Text="{Binding Published}" Foreground="White"/>
</StackPanel>
</UserControl>
Но если я переопределю настройку окна данных datacontext в конструкторе codebehind, это будет работать! Как это:
xRoot.DataContext = FeedData;
Я понимаю, почему это работает, когда в кодебэхтинге установлен текстовый текст. Но я хотел бы найти способ получить переменные внутри объекта, который объявлен в codebehind. Потому что все должно быть выполнимо из XAML, верно?
Спасибо за ответы заранее.