使用UWP Refresh的Xamarin表单会使值消失

时间:2017-07-12 20:04:24

标签: xaml xamarin uwp xamarin.forms xamarin.forms.listview

我有一个使用Android和UWP的Xamarin Forms应用程序。在Android下一切正常但在UWP下我想修改屏幕上显示的某些值时会遇到问题。

这是我的(简化)ViewModel(使用Fody.PropertyChanged):

public class SalesViewModel : BaseAppViewModel
{
    public ObservableCollection<SaleModel> Sales { get; set; } 
        = new ObservableCollection<SaleModel>();

    [DoNotNotify]
    public ICommand AddQuantityCommand => new Command<SaleModel>(item =>
    {
        item.Quantity += 1;
    });
}

BaseAppViewModel为Fody.PropertyChanged实现INotifyPropertyChanged接口

(简化)SaleModel类:

public class SaleModel  : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public double Quantity { get; set; }
}

显示SaleModel列表

的(部分)XAML
<ListView x:Name="ListView" ItemsSource="{Binding Sales, Mode=TwoWay}" SelectedItem="{Binding SelectedSale, Mode=TwoWay}">   
<ListView.ItemTemplate>
  <DataTemplate>
    <ViewCell>
      <ViewCell.View>
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
          </Grid.ColumnDefinitions>

          <Image Grid.Column="0" Source="arrow.png">
            <Image.GestureRecognizers>
              <TapGestureRecognizer Command="{Binding Path=BindingContext.AddQuantityCommand, Source={x:Reference Name=SalesPage}}" CommandParameter="{Binding .}" />
            </Image.GestureRecognizers>
          </Image>

          <Label Grid.Column="1" Text="{Binding Quantity, Mode=OneWay}" 
        </Grid>
      </ViewCell.View>
     </ViewCell>
    </DataTemplate>
   </ListView.ItemTemplate>
 </ListView>

单击图像时,数量会增加,但该值会从UWP下的屏幕上消失。

1 个答案:

答案 0 :(得分:0)

我已经测试了您的代码并重现了您的问题。我写了以下ViewCell替换你的。{1}}。请尝试修改您的ViewCell

<ViewCell>
    <StackLayout BackgroundColor="#eee"
    Orientation="Vertical">
        <StackLayout Orientation="Horizontal">
            <Image Source="time.jpg" HeightRequest="50" WidthRequest="50" >
                <Image.GestureRecognizers>
                    <TapGestureRecognizer Command="{Binding AddQuantityCommand} " CommandParameter="{Binding .}"/>
                </Image.GestureRecognizers>
            </Image>
            <Label Text="{Binding Quantity}"
            TextColor="#f35e20" />
            <Label Text="{Binding Quantity}"
            HorizontalOptions="EndAndExpand"
            TextColor="#503026" />
        </StackLayout>
    </StackLayout>
</ViewCell>

enter image description here

我已将code sample上传到github。请参阅。