Ich binde SelectedValue
meiner ListView und dieser Bindung verwendet Konverter. Ich möchte, dass ConvertBack
Methode nach einer Verzögerung ausgeführt werden, scheint es einfach in WPF
, aber nicht in UWP
. Wie kann ich das tun?Einstellung Verzögerung zu aktualisieren Target in Binding in UWP
0
A
Antwort
1
Wenn Sie nur Ihre ConvertBack
verzögern möchten, können Sie eine Aufgabe verwenden und Task.Result
aufrufen, um Ihren Wert zurückzugeben. Zum Beispiel wie folgt aus:
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var val = value.ToString();
var task = Task.Run(async() =>
{
await Task.Delay(1000);
return val;
});
return task.Result;
}
Für das Szenario, das ich diesen Code verwendet, verwende ich zwei Art und Weise die SelectedIndex
eines ListView
zum Text
eines TextBox
, hier ist die Demo zu binden Bindung:
<Page.DataContext>
<local:BlankPage6ViewModel x:Name="ViewModel" />
</Page.DataContext>
<Page.Resources>
<local:IndexToItemConverter x:Key="cvt" />
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="4*" />
</Grid.RowDefinitions>
<TextBox x:Name="tb" Text="5" Height="50" />
<ListView ItemsSource="{Binding MyItems}"
SelectionMode="Single"
SelectedIndex="{Binding ElementName=tb, Path=Text, Mode=TwoWay, Converter={StaticResource cvt}}" Grid.Row="1">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ID}" />
<TextBlock Text="{Binding Name}" Margin="5,0" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
Ansichtsmodell und Modell:
public class BlankPage6ViewModel
{
public BlankPage6ViewModel()
{
MyItems = new ObservableCollection<IDModel>();
for (int i = 0; i < 50; i++)
{
MyItems.Add(new IDModel { ID = i, Name = "Name " + i });
}
}
public ObservableCollection<IDModel> MyItems { get; set; }
}
public class IDModel
{
public int ID { get; set; }
public string Name { get; set; }
}
Der ganze Konverter ist einfach so:
public class IndexToItemConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
Debug.WriteLine("CONVERT");
return Int32.Parse(value.ToString());
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
var val = value.ToString();
var task = Task.Run(async() =>
{
await Task.Delay(1000);
return val;
});
return task.Result;
}
}
Es gibt ein sehr gutes Blog für dieses Szenario ist, können Sie einen Blick: Async Programming : Patterns for Asynchronous MVVM Applications: Data Binding.
Verwandte Themen
- 1. Binding ComboBox zu Enum-Wörterbuch in UWP
- 2. Creators Update Target Version UWP
- 3. Binding ComboBox in UWP verwendet MvvmCross
- 4. Uwp Binding Control bekommen Breite in Viewmodel
- 5. Async Binding Thumbnail Image in UWP
- 6. Windows-10 UWP Binding Bild URL zu Bildquelle in ListView
- 7. UWP-Bindung programmatisch aktualisieren
- 8. Einstellung Proxy für Httpclient in UWP
- 9. WinRT Informationen: Kann nicht lösen Target in UWP
- 10. UWP-Einstellung Grid.Column mit Stil funktioniert nicht
- 11. UWP: Binding + TextChanging = JIT win32 Ausnahme
- 12. UWP ControlTemplate Angehängte DependencyProperty Binding ImageSource
- 13. Ziehen, um UWP zu aktualisieren - Rasteransicht?
- 14. UWP Listview - Textblock in DataTemplate zur Laufzeit aktualisieren
- 15. UWP Binding: Ändern von Hintergründen in XAML mit C#
- 16. Aktuelle Aktivität ohne Verzögerung aktualisieren
- 17. Android UI Verzögerung von der Einstellung Bild
- 18. Einstellung Rasterbreite = "*" in VisualStaatsmanager in Xaml
- 19. Target KeyboardInterrupt zu Subprozess
- 20. Binding Textbox in wpf
- 21. hinzufügen Objekt zu einem Binding in einer Binding
- 22. Binding null Inhalt in ContentControl
- 23. Datenbindung, um nur Eigenschaften zu erhalten. Benutzeroberfläche aktualisieren Binding
- 24. Benutzerdefinierte Markupextension in UWP
- 25. Wie Einfügen eines VisualState-Auslösers in einem ListView in UWP?
- 26. three.js Verzögerung beim Aktualisieren lokaler Schnittebenen
- 27. in UWP Bindung (C#)
- 28. Quelle/Target Kompatibilitätsliste in Android Studio
- 29. Binding DataGridComboBoxColumn zu einem Wörterbuch
- 30. Anzeige Bar in UWP
Basierend auf [Ihrem letzten Fall] (http://stackoverflow.com/questions/40741754/how-to-load-itemssource-before-setting-selecteditem-in-listview), Schlüssel Problem ist immer noch eine ausgewählte Wenn beim ersten Mal die Elemente geladen werden, ist das für Ihr Szenario OK, wenn Sie 'SelectedIndex' oder' SelectedItem' anstelle von 'SelectedValue' verwenden? –
@ GraceFeng-MSFT: Nein, es ist eine andere Frage. – Maryam