Dans mon interface utilisateur, je souhaite parfois placer des titres au-dessus des contrôles utilisateur. Je veux déclarer ces titres en XAML pour une future localisabilité, donc je veux les garder hors des datacontexts.Liaison à la propriété sur l'élément racine dans DataTemplate via un ContentControl
La connexion de données peut-elle les récupérer à partir d'une propriété définie sur le nœud racine de la commande usercontrol?
J'ai fait bouillir le problème à l'exemple de code suivant:
using System.Windows;
namespace WpfApplication12
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.Person = new Author { Name = "Guge" };
this.DataContext = this;
}
public object Person { get; set; }
}
public class Author
{
public string Name { get; set; }
}
}
Et:
<Window x:Class="WpfApplication12.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication12"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type local:Author}">
<Border AutomationProperties.Name="Author" BorderThickness="1" BorderBrush="Black">
<Label Content="{Binding Name}"/>
</Border>
</DataTemplate>
</Window.Resources>
<StackPanel>
<Label x:Name="Position" Content="Author"/>
<ContentControl x:Name="presentation" Content="{Binding Person}"/>
</StackPanel>
Le problème pratique est la suivante: comment puis-je utiliser la liaison de données dans le contenu propriété de l'étiquette "Position" pour récupérer le mot "Author" de la propriété AutomationProperties.Name de la bordure dans le DataTemplate?
Merci. Et je suppose que définir TypeName au contenu de AutomationProperties.Name dans code-behind? – Guge
Il doit y avoir un endroit où Person.TypeName est défini, oui. D'une manière générale je n'aime pas le codebhind (http://goo.gl/KyTW). Mais si vous l'utilisez, oui c'est probablement l'endroit. – bitbonk
Votre expression de liaison de données pour TypeName ne fonctionne pas. – Guge