ListPicker困境 - 如何保存回访的默认值?

时间:2014-04-08 17:33:18

标签: c# xaml windows-phone listpicker

我目前正在尝试使用ListPicker更新我应用的设置页面。

我一直在阅读并将其与我的IsolatedStorage相关联。但是,如果我选择一个选项,请使用我当前的代码,然后离开页面然后返回,SelectedIndex设置已保存,但SelectedItem不是。如果我对SelectedItem使用与SelectedIndex相同的代码,则会出错。

<toolkit:ListPicker x:Name="defaultPicker"
            SelectedIndex="{Binding Source={StaticResource appSettings}, Path=LanguageSetting, Mode=TwoWay}"
            Grid.Column="2" Grid.Row="5">
                <toolkit:ListPickerItem Content="Cesky"/>
                <toolkit:ListPickerItem Content="English"/>
                <toolkit:ListPickerItem Content="Deutsch"/>
  </toolkit:ListPicker>

如何在ListPicker保存中选择选项,以便当用户离开后返回设置页面时,他们选择的上一个选项是否显示为显示的初始值?

提前致谢!

编辑:我已对代码进行了修改,因此我的ListPickerItem现已成为数据绑定。但我仍然遇到同样的问题。

XAML

<DataTemplate x:Name="ListPickerItemTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FromClassTaxCode}" Margin="10 0 0 0"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Name="ListPickerFullModeItemTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FromClassTaxCode}" Margin="10 0 0 0"/>
</StackPanel>
</DataTemplate>

....

<StackPanel Grid.Column="1" Grid.Row="5">
<toolkit:ListPicker x:Name="listPicker" 
ItemsSource="{Binding FromClassTaxCode}" 
ItemTemplate="{StaticResource ListPickerItemTemplate}" 
SelectedIndex="{Binding Source={StaticResource appSettings}, Path=TaxCodeLetterSetting, Mode=TwoWay}" 
FullModeItemTemplate="{StaticResource ListPickerFullModeItemTemplate}" 
FullModeHeader="Select A Tax Code Letter..." 
</StackPanel>

C#

public SettingsWithoutConfirmation()
{
    InitializeComponent();

    List<TaxCodes> source = new List<TaxCodes>();
    source.Add(new TaxCodes() { FromClassTaxCode = "Madrid" });
    source.Add(new TaxCodes() { FromClassTaxCode = "Las Vegas" });
    source.Add(new TaxCodes() { FromClassTaxCode = "London" });
    source.Add(new TaxCodes() { FromClassTaxCode = "Mexico" });
    source.Add(new TaxCodes() { FromClassTaxCode = "FSDF" });
    source.Add(new TaxCodes() { FromClassTaxCode = "FDSFDS" });
    source.Add(new TaxCodes() { FromClassTaxCode = "LKJSGFD" });
    this.listPicker.ItemsSource = source;
}

TaxCodes.cs *

namespace MyNameSpace
{
    public class TaxCodes
    {
        public string FromClassTaxCode
        {
            get;
            set;
        }

    }
}

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。您需要在设置所选索引之前定义项目。因此,您必须为项目使用数据绑定,并且必须将其放在SelectedIndex之前。