我绑定了我的ListView的SelectedValue
和这个绑定使用的转换器。
我希望在延迟后执行ConvertBack
方法,WPF
似乎很容易,UWP
则不行。
我怎么能这样做?
答案 0 :(得分:1)
如果您只是想延迟ConvertBack
,那么您可以使用任务并致电Task.Result
以返回您的值。例如:
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;
}
对于我使用此代码的方案,我使用双向绑定将SelectedIndex
的{{1}}绑定到ListView
的{{1}},这是演示:
Text
ViewModel和Model:
TextBox
整个转换器很简单:
<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>
这个场景有一个非常好的博客,您可以查看:Async Programming : Patterns for Asynchronous MVVM Applications: Data Binding。