ich schreibe gerade an einer anwendung, mit der man minecraft-server (bukkit) verwalten kann. dabei soll es auch die installierten plugins auflisten. das hab ich auch mit einer listview/listbox (seh kein unterschied zwischen den beiden) gemacht, die die items aus einer bindung kriegt. doch wenn er jetzt items hinzufügen soll, bekomme ich diese meldung:
Zitat
Eine nicht behandelte Ausnahme des Typs "System.StackOverflowException" ist in WindowsBase.dll aufgetreten.
und im ausgabe fenster ist auch nichts auffälliges zu sehen.
der xaml-code:
<ListBox x:Name="Plugins" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" ItemTemplate="{StaticResource PluginItem}" Background="Transparent" BorderThickness="0"/>
...und hier die vorlage der items:
<DataTemplate x:Key="PluginItem">
<Grid MinHeight="32">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="32"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="20"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="2"/>
<RowDefinition Height="32"/>
<RowDefinition Height="2"/>
</Grid.RowDefinitions>
<Image Name="plugIcon" Tag="{Binding Path=PluginStatus}" Grid.Column="0" Grid.Row="1">
<Image.Resources>
<Style TargetType="Image">
<Style.Triggers>
<Trigger Property="Tag" Value="Working">
<Setter Property="Source" Value="Resources/Working.png"/>
</Trigger>
<Trigger Property="Tag" Value="Disabled">
<Setter Property="Source" Value="Resources/Disabled.png"/>
</Trigger>
<Trigger Property="Tag" Value="Faulty">
<Setter Property="Source" Value="Resources/Faulty.png"/>
</Trigger>
</Style.Triggers>
</Style>
</Image.Resources>
</Image>
<ContentPresenter ContentSource="{Binding Path=PluginName}" Grid.Column="1" Grid.Row="1" VerticalAlignment="Center" Margin="2" HorizontalAlignment="Left"/>
<Button/>
</Grid>
</DataTemplate>
der code dahinter:
Dim wPlugins As New List(Of PlugItem)
If IO.Directory.Exists("plugins") Then
Dim workingPlugins() As String = IO.Directory.GetFiles("plugins")
For Each File As String In workingPlugins
If File.EndsWith(".jar") Then
wPlugins.Add(New PlugItem() With {.PluginStatus = "Working", .PluginName = File.Replace(".jar", "")})
End If
Next
End If
InitializeComponent()
Plugins.ItemsSource = wPlugins
...und hier die klasse für die plugin-items:
Public Class PlugItem
Dim plugstate As String
Public Property PluginStatus() As String
Get
Return plugstate
End Get
Set(ByVal value As String)
If value = "Working" Xor value = "Disabled" Xor value = "Faulty" Then
plugstate = value
Else
Throw New Exception("Invalid plugin status given!" & vbNewLine & "You can only set:" & vbNewLine & "'Working', 'Disabled' or 'Faulty'!")
End If
End Set
End Property
Dim plugname As String
Public Property PluginName() As String
Get
Return plugname
End Get
Set(value As String)
plugname = value
End Set
End Property
Public Overrides Function ToString() As String
Return PluginStatus & "|" & PluginName
End Function
End Class
zu erwähnen ist auch, dass ich mich nicht wirklich mit datenbindungen so recht auskenne (hab das aus nem blog im inet übernommen). vielleicht hab ich ja etwas übersehn.

Hilfe
Neues Thema
Antworten

Nach oben

