J'ai créé un contrôle utilisateur dans WPF:Comment lire un paramètre passé dans un UserControl WPF?
<UserControl x:Class="TestUserControl.Controls.GetLatest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<TextBlock Name="theTextBlock"/>
</UserControl>
Le code a derrière un paramètre appelé "FirstMessage", qui définit comme le texte de mon TextBlock de contrôle de l'utilisateur:
public partial class GetLatest : UserControl
{
public string FirstMessage { get; set; }
public GetLatest()
{
InitializeComponent();
theTextBlock.Text = this.FirstMessage;
}
}
Dans mon code principal Je peux régler le paramètre FirstMessage dans mon contrôle utilisateur avec IntelliSense:
<Window x:Class="TestUserControl.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300"
xmlns:controls="clr-namespace:TestUserControl.Controls"
>
<StackPanel>
<controls:GetLatest FirstMessage="This is the title"/>
</StackPanel>
</Window>
Cependant, cela ne fonctionne toujours pas défini le texte. J'ai essayé Text = "{Binding Path = FirstMessage}" et d'autres syntaxes que j'ai trouvées mais rien ne fonctionne.
Comment puis-je accéder à la valeur FirstMessage dans mon contrôle utilisateur?
oui! exactement ce que je cherchais, merci! –
J'ai essayé votre solution et j'ai obtenu l'erreur "Profondeur de l'arbre logique dépassée lors de la traversée de l'arbre, ce qui pourrait indiquer un cycle dans l'arbre." mais quand je supprime la ligne this.DataContext = this; l'erreur disparaît mais la liaison ne fonctionnera pas. Quel est le problème ici? –
@Tri Q: Je vois aussi l'exception de profondeur d'arbre logique mais dans un code différent. Ne semble pas être beaucoup de matériel concernant cette erreur sur le Web, donc je suis curieux de savoir si vous pourriez répondre si vous avez trouvé une solution. – jpierson