0

私はアプリケーションを作成しようとしていますが、WindowsPhoneですべてがどのように機能するかを理解しています。

Windows Phoneエミュレーターでアプリケーションを実行しようとしましたが、エラーなしで前の画面に戻ります。(コンパイラーもエラーを出しません。)

this.voice = value以外のものを入れなくても、機能しません。

エラーが発生するコードは次のとおりです。

   // volume of the voice of the commentator;
   public int voice { 
        get 
        { 
            return voice; 
        }
        set 
        {
            settings["voice"] = this.voice = (int)value;  // right here it just stops.
        } 

この関数を呼び出すコードは次のとおりです。

public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
       // example :: ExceptionHandler.newException("er is geen exception");

        Option option = new Option();
        option.backgroundMusic = 22; // here
        option.voice = 32; // here

    }
}

そして全体像について:

メインページ :

public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
       // example :: ExceptionHandler.newException("er is geen exception");

        Option option = new Option();
        option.backgroundMusic = 22;
        option.voice = 32;

    }
}

クラスオプション:

    public class Option
    {
    // isolated storage settings connection.
    private static IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 

    // volume of the backgroundMusic;
    public int backgroundMusic { 
        get 
        { 
            return backgroundMusic; 
        } 
        set 
        {
            settings["backgroundMusic"] = this.backgroundMusic = (int)value; 
        } 
    } 

    // volume of the voice of the commentator;
    public int voice { 
        get 
        { 
            return voice; 
        }
        set 
        {
            settings["voice"] = this.voice = (int)value; 
        } 
    }





    public Option()
    {
        // If the keys doesn't exists
        if (!settings.Contains("backgroundMusic") && !settings.Contains("voice"))
        {

            // Create the settings.
            settings.Add("backgroundMusic", (int)50 );
            settings.Add("voice", (int)50);
        }
        // If the key exists, retrieve the value and set the properties of backgroundMusic and voice
        else
        {
            this.backgroundMusic = (int)settings["backgroundMusic"];
            this.voice = (int)settings["voice"];
        }
    }
}

編集 :

私が何か他のことを間違えた場合、または何かがより良いかもしれない場合、私は提案を受け付けています。教えてください。

4

1 に答える 1

0

無限ループ?this.voice = valueセットを再度起動すると、ループが発生します。

別のフィールドを宣言し、それを値ストアとして使用する必要があります。

private int _voice;
public int voice
{ 
    get 
    { 
        return _voice; 
    }
    set 
    {
        settings["voice"] = _voice = (int)value; 
    } 
}

2 番目のプロパティでも同じことを行う必要があります。

于 2013-02-22T22:02:25.800 に答える