如何更新/保存步进值以备后用?

时间:2019-05-08 00:23:31

标签: c# xamarin.forms

我有一个单一窗口的应用程序,基本上是一个计算器,在这里我可以即时更改各个条目,以根据刚刚输入的新价格/权重等生成新的利润/收支平衡答案。每个输入视图都与步进器值绑定,以进行快速的小调整,或者可以编辑输入以进行大的更改。我该如何保存步进器当前处于运行状态的值,以便下次使用该应用程序时使用?

            <Grid x:Name="PurchasePriceGrid">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width=".6*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="40" />
                </Grid.RowDefinitions>
                <Label Text="Purchase Price" TextColor="Black" FontAttributes="Bold" Margin="0,0,25,0" Scale="1.2" TranslationX="15" 
                   Grid.Column="0" HorizontalTextAlignment="End" VerticalTextAlignment="Center" LineBreakMode="NoWrap" />
                <customentry:MyEntry x:Name="PurchasePriceEntry" Text="{Binding Source={x:Reference PurchasePriceStepper}, Path=Value, FallbackValue=0}"
                                 TextColor="DarkSlateGray" FontAttributes="Bold" BackgroundColor="Ivory" TranslationX="10"
                                 Grid.Column="1" HorizontalTextAlignment="Center" Keyboard="Numeric" VerticalOptions="End" MaxLength="5"
                                 TextChanged="PurchasePriceEntry_Completed" />
                <Stepper x:Name="PurchasePriceStepper" Grid.Column="2" HorizontalOptions="Center" VerticalOptions="Center"  Scale=".7" TranslationX="3"
                     Maximum="5" Minimum=".01" Increment=".01" Value="1.75" />
            </Grid>

我不想遍历每个条目并更改值以回到每次打开应用程序时退出的地方,就像现在一样……我是编程新手,我可以找不到任何示例供我遵循。我猜想我需要以某种方式使用INotifyPropertyChanged之类的东西,例如Xamarin Forms - update a label value,如果是这样,我该如何使用步进值呢?还是有更好的方法来获得我想要的结果?

2 个答案:

答案 0 :(得分:1)

如果要在退出应用之前保存值并在再次启动应用时显示,则可以使用Xamarin.Essentials NuGet和“ Prefrences”。

答案 1 :(得分:1)

您可以使用Xamarin.Essentials,尤其是Preferences类。

据我了解,您想保存PurchasePriceStepper.Value以便在重新打开应用程序时将其检索。

您可以使用以下代码保存该值:

Preferences.Set("PurchasePriceStepper", PurchasePriceStepper.Value);

您可以使用以下代码检索保存的值:

var stepperValue = Preferences.Get("PurchasePriceStepper", String.Empty);

请记住,您必须在应用程序出口或步进ValueChanged事件中执行值的保存,并且可能在页面的onAppearing事件中加载值。