Another post décrit comment accéder à un codebehind variable en XAML.L'accès à l'objet codebehind dans XAML
Cependant, je voudrais accéder à une variable dans codebehind objet à partir de XAML. L'objet codebehind, appelé FeedData, est déclaré en tant que propriété de dépendance de type FeedEntry. Cette classe est juste une classe de conteneur avec des propriétés string et datetime.
propriété de Codebehind definitition est la suivante:
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 }));
En XAML je fais cela, ce qui ne fonctionne pas:
<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>
Mais si je redéfinissant le réglage datacontext de fenêtre dans le contructor de codebehind, il marchera! Comme ceci:
xRoot.DataContext = FeedData;
Je comprends pourquoi cela fonctionne quand datacontext est défini dans codebehing. Mais j'aimerais trouver un moyen de saisir des variables dans un objet déclaré dans codebehind. Parce que, tout devrait être possible à partir de XAML, non?
Merci d'avance pour vos réponses.
C'est tout! Merci pour l'aide! – Pompair