Ich habe ein Problem mit Zwei-Wege-Bindung mit einem Listpicker. Ich bin in der Lage, den Wert mit C#, aber nicht in der SelectedItem=".."
in Xaml. Die Bindung gibt den richtigen Wert zurück (und ist ein Wert im Listenpicker), da ich sie durch Textvergabe an einen Textblock gesendet habe.Zwei-Wege-Bindung Einstellungen Problem
Wenn die Seite geladen, die auf der listpicker verwendete Bindung verursacht eine System.ArgumentOutOfRangeException
Der Code ich es einstellen verwende ist:
// Update a setting value. If the setting does not exist, add the setting.
public bool AddOrUpdateValue(string key, Object value)
{
bool valueChanged = false;
try
{
// If new value is different, set the new value
if (settingsStorage[key] != value)
{
settingsStorage[key] = value;
valueChanged = true;
}
}
catch (KeyNotFoundException)
{
settingsStorage.Add(key, value);
valueChanged = true;
}
catch (ArgumentException)
{
settingsStorage.Add(key, value);
valueChanged = true;
}
catch (Exception e)
{
Console.WriteLine("Exception occured whilst using IsolatedStorageSettings: " + e.ToString());
}
return valueChanged;
}
// Get the current value of the setting, if not found, set the setting to default value.
public valueType GetValueOrDefault<valueType>(string key, valueType defaultValue)
{
valueType value;
try
{
value = (valueType)settingsStorage[key];
}
catch (KeyNotFoundException)
{
value = defaultValue;
}
catch (ArgumentException)
{
value = defaultValue;
}
return value;
}
public string WeekBeginsSetting
{
get
{
return GetValueOrDefault<string>(WeekBeginsSettingKeyName, WeekBeginsSettingDefault);
}
set
{
AddOrUpdateValue(WeekBeginsSettingKeyName, value);
Save();
}
}
Und in der XAML:
<toolkit:ListPicker x:Name="WeekStartDay"
Header="Week begins on"
SelectedItem="{Binding Source={StaticResource AppSettings},
Path=WeekBeginsSetting,
Mode=TwoWay}">
<sys:String>monday</sys:String>
<sys:String>sunday</sys:String>
</toolkit:ListPicker>
Die StaticResource AppSettings
ist eine Ressource aus einer separaten CS-Datei.
<phone:PhoneApplicationPage.Resources>
<local:ApplicationSettings x:Key="AppSettings"></local:ApplicationSettings>
</phone:PhoneApplicationPage.Resources>
Vielen Dank im Voraus
Was meinen Sie, wenn Sie '{StaticResource AppSettings}' schreiben? Ist es ein Name von 'Ressource', der irgendwo in' XAML' oder einer 'statischen Klasse' definiert ist? – decyclone
Ja Entschuldigung, ich habe vergessen, AppSettings zu erwähnen ist eine separate Klassendatei – Jamie
Ist es eine statische Klasse? Verwechseln Sie '{x: Static AppSettings.WeekBeginsSetting}' mit Ihrer aktuellen Bindung? Weil Silverlight '{x: Static}' nicht unterstützt. – decyclone