Ich habe eine Benutzersteuerung in WPF:Wie liest man einen übergebenen Parameter in einem WPF UserControl?
<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>
Der Code hinter einen Parameter "FirstMessage", die sie als Text meiner Benutzerkontrolle TextBlock- setzt:
public partial class GetLatest : UserControl
{
public string FirstMessage { get; set; }
public GetLatest()
{
InitializeComponent();
theTextBlock.Text = this.FirstMessage;
}
}
In meinem Haupt-Code ich kann den FirstMessage Parameter in meiner Benutzersteuerung mit Intellisense gesetzt:
<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>
es ist jedoch immer noch nicht den Text gesetzt. Ich habe versucht, Text = "{Binding Path = FirstMessage}" und andere Syntaxen, die ich gefunden habe, aber nichts funktioniert.
Wie kann ich auf den FirstMessage-Wert in meinem Benutzersteuerelement zugreifen?
ja! Genau das, was ich gesucht habe, danke! –
Ich habe versucht Ihre Lösung und habe den Fehler "Logische Baumtiefe überschritten beim Durchqueren des Baumes. Dies könnte einen Zyklus in der Struktur angeben." aber wenn ich die Zeile entferne this.DataContext = this; Der Fehler verschwindet, aber die Bindung funktioniert nicht. Was ist das Problem hier? –
@Tri Q: Ich sehe die logische Baumtiefe Ausnahme auch, aber in anderem Code. Es scheint nicht viel Material in Bezug auf diesen Fehler im Web zu sein, also bin ich neugierig, ob Sie antworten könnten, wenn Sie eine Lösung gefunden haben. – jpierson