| 

.NET C# Java Javascript Exception

2
Hallo Silverlight Experten,
in meinem Xaml habe ich ein DataTemplate mit einem TextBlock definiert:
<UserControl.Resources>
<DataTemplate x:Key="hyperlink_DataTemplate">
<HyperlinkButton Style="{StaticResource HyperlinkButtonStyle}" Click="hlbRisiken_Click" VerticalAlignment="Center">
<TextBlock Style="{StaticResource HyperlinkTextBlockStyle}" x:Name="tbRisks" Text="{Binding Value}" />
</HyperlinkButton>
</DataTemplate>
</UserControl.Resources>


Nun möchte ich dem TextBlock dynamisch im CodeBehind ein Binding zuweisen, schaffe es aber nicht, den TextBlock aus dem DataTemplate zu selektieren:

Mit folgendem Code bekomme ich eine Fehlermeldung: "Reference" ist kein gültiges visuelles "DependencyObject".

DataTemplate dataTempl = this.Resources["cellTemplate"] as DataTemplate;
TextBlock tb = dataTempl.GetElementByName("tbAnzahl") as TextBlock;


Hat jemand eine Idee, wie man das machen kann?

Viele Grüsse,
shabi79
10.08.2011
shabi79 111 1
2 Antworten
0
Hallo shabi79,

also auf den ersten Blick passt Dein Zugriff auf die Resources nicht mit Deinem XAML Code zusammen. So sollte es klappen:
DataTemplate dataTempl = this.Resources["hyperlink_DataTemplate"] as DataTemplate;
TextBlock tb = dataTempl.GetElementByName("tbRisks") as TextBlock;

Hab grad wieder kein Beispielcode zur Hand, aber hat ein DataTemplate überhaupt eine GetElementByName Methode? Versuche, an die Kinder des DataTemplate heranzukommen und benutze dann die FindAll<T> Methode, die ich in der Antwort auf Deine andere Frage implementiert habe, um die entsprechende Textbox auszulesen. Grade wenig Zeit, sorry. VIelleicht hilft das.

Viel Erfolg
Florian
11.08.2011
ffordermaier 4,7k 2 8
0
Hallo Florian,
danke für Deine Antwort. Wie definiert man denn einen ResourceKey für einen TextBlock?

Gruss
shabi
11.08.2011
shabi79 111 1
Gute Frage. Da hab ich in dem Moment gar nicht drüber nachgedacht. HAtte auch kein Studio zur Hand, um ein bissl Code zu schreiben. GetElementByName greift ja per Name zu, also müsste es (wie oben editiert) dann funktionieren. Das mit dem FindResource mag nützlich sein, aber löst Dein Problem hier nicht.
ffordermaier 11.08.2011

Stelle deine .net-Frage jetzt!