| 

.NET C# Java Javascript Exception

1
Hallo zusammen.

Zur Info: Ich bastele/übe einwenig herum.

Dabei bin ich auf folgendes gestoßen:



Beipiel:

In einer Form ist eine Listbox und ein Button.
Nun wäre es echt toll, wenn der Button nur dann IsEnabled = true hat, wenn auch Einträge in der Liste vorhanden sind.

Deshalb hab ich folgendes versucht, mich an das Element listBox2 zu binden.
Dabei soll Items.Count über einen Konverter ausgewertet werden.
Wenn 0 Einträge in der ListBox da sind, soll false, anstonsten true zurückkommen.

<Button Content="-" Height="20" Margin="12,37,0,0" Name="button4" VerticalAlignment="Top" 
Click="button4_Click" ToolTip="alle abwählen" HorizontalAlignment="Left" Width="29"
IsEnabled="{Binding Path=Items/Count, ElementName=listBox2, Converter={StaticResource ConvertIntToBool1},
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />


Mein Konverter:

[ValueConversion(typeof(int), typeof(bool))]
public class ConvertIntToBool : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || value == (object) 0)
return false;

return true;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == (object) true)
return 1;

return 0;
}
}


Diesen habe ich natürlich im xmlns eingebunden.
xmlns:converter="clr-namespace:Test.MyConverters"


Dann habe ich ne Resource hinterlegt:
<Window.Resources>
<converter:ConvertIntToBool x:Key="ConvertIntToBool1" />


Aber da passiert nichts.

Der Button ist immer IsEnabled = true, obwohl die Liste bein Erststart immer leer ist.


Was mache ich falsch?

Gruß
Rüdiger
05.10.2011
Ruediger42 19 2
2 Antworten
5
Binde mal OneWay und gehe auf das Count mit der Punktnotation (Items.Count anstatt Items/Count)

IsEnabled="{Binding Path=Items.Count, ElementName=listBox2, Converter={StaticResource ConvertIntToBool1}, 
Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"


und im Converter ändere mal die Bedingung

if (value == null || (int)value == 0)
05.10.2011
Mario Priebe 5,8k 2 9
+1 Scharfes Auge! Der falsche Cast dürfte dazu führen, dass ein Referenz- statt ein Wertvergleich stattfindet, und der dürfte wohl immer "ungleich" ergeben.
Matthias Hlawatsch 05.10.2011
0
Hi Mario.

Vielen Dank für Deine Antwort und Hilfe.

viele Grüße

Rüdiger
06.10.2011
Ruediger42 19 2
Gerne. Wenn dir die Antwort geholfen hat kannst du sie übrigens auch als korrekte Antwort markieren ;)
Mario Priebe 12.10.2011

Stelle deine Programmieren-Frage jetzt!
InnoGames GmbH
infounit Software GmbH
myfactory International GmbH