В другом сообщении описывается, как получить доступ к переменной скрытого кода strong> в XAML.
Однако я хотел бы получить доступ к переменной в выделенном коде объекта из XAML. Объект выделенного кода, называемый FeedData, объявлен как свойство зависимости типа FeedEntry. Этот класс представляет собой просто контейнерный класс со свойствами строки и даты и времени.
Определение свойства 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;
Я понимаю, почему это работает, когда datacontext установлен в кодировке. Но я хотел бы найти способ захватывать переменные внутри объекта, который объявлен в выделенном коде. Потому что все должно быть выполнено с помощью XAML, верно?
Заранее благодарим за ответы.