| 

.NET C# Java Javascript Exception

4
Wie kann ich eine ObservableCollection dazu bringen durch einen ButtonClick bzw. ein Command das nächste item anzuzeigen. Gibt es sowas wie MoveToNext oder ähnliches ??
News:
27.08.2011
Jens79 85 5
5 Antworten
1
Oh Sorry, Ich habe nicht gesehen dass es sich um SL handelt. Diese Funktionalität mit dem DefaultView gibt es in SL nicht. Dort wird direkt die Liste an die GUI gebunden und nicht dessen DefaultView

Mit SL hab ich leider keine Erfahrung um dir sagen zu können wie man es dort am besten löst

Gruß
Michael
27.08.2011
michlG 1,7k 1 5
3
Nimm doch einfach einen Zähler.
Hier ein kleines Beispiel schnell runtergetippt:
Codebehind:
public partial class MainPage : UserControl
{
private readonly ObservableCollection<string> _collection;
private int _count;

public MainPage()
{
InitializeComponent();
_collection = new ObservableCollection<string> { "one", "two", "three", "four" };
txtFoo.Text = _collection[_count];
}

private void btnNext_Click(object sender, RoutedEventArgs e)
{
if (_count < _collection.Count)
{
Dispatcher.BeginInvoke(() => txtFoo.Text = _collection[++_count]);
}
}
}

Und XAML:
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel>
<Button x:Name="btnNext" Content="next" Width="100" Click="btnNext_Click">
</Button>
<TextBox x:Name="txtFoo">

</TextBox>
</StackPanel>

</Grid>
27.08.2011
Jürgen Luhr 7,1k 2 9
Das mag zwar funktionieren. Aber wirklich im Sinne von MVVM ist das nicht.
Besser wäre da wenn wenigstens das Click-Event durch ein Command ersetzt würde und die TextBox per DataBinding gefüttert würde.
michlG 28.08.2011
Kein Thema. Hier ging es nur darum, das move-next zu simulieren. Das ganze würde bei mir auch im ViewModel gesteuert und per Binding angezeigt werden :P
Da Jens79 nicht nach MVVM fragte, bin ich nicht darauf eingegangen.
Jürgen Luhr 28.08.2011
1
Hallo,

du kannst das über den CollectionView machen.
ICollectionView v = CollectionViewSource.GetDefaultView(myObservableCollection);
v.MoveCurrentToNext();


Wenn ich mich jetzt nicht vertippt habe, dann sollte es funktionieren ;)

Gruß
Michael
27.08.2011
michlG 1,7k 1 5
0
da bekomme ich die Fehlermeldung "System.Windows.Data.CollectionViewSource" enthält keine Definition für "GetDefaultView".

Habe ich irgendein using vergessen ??

Gruß

Jens
27.08.2011
Jens79 85 5
0
Danke das hat geholfen jetzt kann ich wunderbar in meiner ObservableCollection hin un her switchen.
28.08.2011
Jens79 85 5
Wenn dir eine Antwort geholfen hat, solltest du diese als akzeptierte Antwort markieren :o)
Jürgen Luhr 28.08.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH