-
Posts: 1524
Nickname: nitronic
Registered: Jul, 2006
|
Norbert Eder works as a software architect.
|
|
|
|
WPF: Array-Bug oder ist das so gewollt?
|
Posted: Mar 25, 2008 1:11 PM
|
|
|
This post originated from an RSS feed registered with .NET Buzz
by -.
|
Original Post: WPF: Array-Bug oder ist das so gewollt?
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
|
Latest .NET Buzz Posts
Latest .NET Buzz Posts by -
Latest Posts From Norbert Eder - Living .NET
|
|
Ressourcen sind ja doch eine häufige Angelegenheit in WPF. Klar, immerhin möchten Styles definiert werden, oder manches Mal sollte vielleicht auch ein Array definiert werden, warum auch immer. Und genau hier scheint es ein Problem zu geben.
Ich muss gleich vorweg nehmen, dass ich mich jetzt nicht auf die Suche nach einem offiziellen Bug-Eintrag gemacht habe, sondern poste dies jetzt, da es mir gerade eben aufgefallen ist. Für sachdienliche Hinweise (eine weitere Evaluierung wird meinerseits erst morgen stattfinden) bin ich natürlich dankbar.
Nehmen wir folgendes XAML (eingebettet in ein Window):
<Window.Resources>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="FontFamily" Value="Comic Sans MS"/>
<Setter Property="FontSize" Value="14"/>
</Style>
<x:Array x:Key="MyPhotos" Type="{x:Type sys:String}">
<sys:String>Blaue Berge.jpg</sys:String>
<sys:String>Sonnenuntergang.jpg</sys:String>
<sys:String>Winter.jpg</sys:String>
</x:Array>
</Window.Resources>
<StackPanel Orientation="Vertical">
<TextBlock Name="textblock1">My Pictures</TextBlock>
<TextBlock>Check out my new pictures!</TextBlock>
<ListBox
x:Name="PhotoBox"
Background="Silver"
SelectedIndex="0"
ItemsSource="{Binding Source={StaticResource MyPhotos}}"/>
</StackPanel>
Eigentlich ist alles korrekt. Das Hauptaugenmerk ist weniger auf den Style, als auf das definierte Array zu legen. Das Problem besteht darin, dass die Daten, welche durch das Array angeboten werden, in der ListBox schlichtweg nicht angezeigt werden.
Nun, das kuriose, wird das Array zu Beginn der Fenster-Ressourcen definiert, dann funktioniert es. Also so:
<Window.Resources>
<x:Array x:Key="MyPhotos" Type="{x:Type sys:String}">
<sys:String>Blaue Berge.jpg</sys:String>
<sys:String>Sonnenuntergang.jpg</sys:String>
<sys:String>Winter.jpg</sys:String>
</x:Array>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="FontFamily" Value="Comic Sans MS"/>
<Setter Property="FontSize" Value="14"/>
</Style>
</Window.Resources>
<StackPanel Orientation="Vertical">
<TextBlock Name="textblock1">My Pictures</TextBlock>
<TextBlock>Check out my new pictures!</TextBlock>
<ListBox
x:Name="PhotoBox"
Background="Silver"
SelectedIndex="0"
ItemsSource="{Binding Source={StaticResource MyPhotos}}"/>
</StackPanel>
Diese Variante funktioniert tadellos. Der einzige Unterschied: Das Array wurde - wie bereits erwähnt - zu Beginn der Ressourcen definiert.
Selbst wenn dies ein gewolltes Verhalten ist, kann ich es nicht nachvollziehen. Zumal jedes beliebige Array angezeigt werden kann (egal an welcher Position), wenn die erste Definition innerhalb der Ressourcen ein Array ist. D.h. in diesem Fall kann zwischen unterschiedlichen Array-Definitionen auch ein oder mehrere Style-Elemente vorhanden sein, es funktioniert dann trotzdem.
Eigentlich verwirrend, oder nicht?
Read: WPF: Array-Bug oder ist das so gewollt?
|
|