Hallo ich möchte ein Array im Xaml Code deklarieren, wie in diesem Beispiel.
Im Designer klappt das ganz gut, aber sobald ich das Programm starte, ist die ListBox leer, warum?
<Window x:Class="WpfSamples3.Samples.general.CollectionsSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:this="clr-namespace:WpfSamples3.Samples.general"
Title="CollectionsSamples" Height="300" Width="300">
<Window.Resources>
<x:Array x:Key="PersonenList1" Type="{x:Type this:Person}">
<this:Person Name="Herweg" Vorname="Tobias" Alter="23" />
<this:Person Name="Follmann" Vorname="Tanja" Alter="20" />
<this:Person Name="Müller" Vorname="Frank" Alter="25" />
<this:Person Name="Bauer" Vorname="Silke" Alter="22" />
</x:Array>
<DataTemplate x:Key="PersonenTemplate1">
<TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>
</Window.Resources>
<Grid>
<StackPanel VerticalAlignment="Top">
<ListBox ItemTemplate="{StaticResource PersonenTemplate1}">
<ListBox.ItemsSource>
<Binding Source="{StaticResource PersonenList1}" Path="Items"/>
</ListBox.ItemsSource>
</ListBox>
</StackPanel>
</Grid>
</Window>
public class Person
{
string _sName = "";
string _sVorname = "";
int _iAlter = 0;
public string Name
{
get { return _sName; }
set { _sName = value; }
}
public string Vorname
{
get { return _sVorname; }
set { _sVorname = value; }
}
public int Alter
{
get { return _iAlter; }
set { _iAlter = value; }
}
}
Hallo lord_fritte,
schaue mal in das Outputfenster - da sollte etwas stehen wie "Der Typ Array definiert keine Property "Items"".
Ersetze mal bei dem
<Binding Source="{StaticResource PersonenList1}" Path="Items"/>
den Wert für Path durch einen Punkt.
Dann sollte es eigentlich funktionieren.
BTW: Du hättest das Binding auch als String formulieren können.
Danke, aber wie kommt es dass es mit Items im Designer geht, aber nicht im Programm, und mit . nicht im Designer, aber im Programm?
Aber im Ausgabefenster wird kein Hinweis darauf angezeigt, dass es kein Items Property gibt.
[Edit] hoppla ich habe die antworten zu schnell überlesen winsharp hat das gleiche...
Hallo,
du greifst auf eine Resource zu.
Deshalb muss das Binding so aussehen:
<Window.Resources>
<x:Array x:Key="StringArray" Type="{x:Type sys:String}">
<sys:String>asedf</sys:String>
<sys:String>asaasdfdf</sys:String>
<sys:String>asaasadfdf</sys:String>
</x:Array>
</Window.Resources>
<Window.Content>
<ListBox ItemsSource="{Binding Source={StaticResource StringArray}}"></ListBox>...
Schaut mal im IRC vorbei:
Server: https://libera.chat/ ##chsarp