Silverlight の子ウィンドウでチェックボックスを使用しています。
ユーザーがチェックボックスをクリックすると、トグル関数がデータベースに送信されます。チェックボックスがオンの場合、値 = 1、チェックされていない値 = -1 であるため、トグルはこれらの値を変更します。
次のコードを使用して-
private int checkCounter1 = 0;
private void checkBox1_Checked(object sender, RoutedEventArgs e)
{
if (checkCounter1 == 0)
{
}
else
{
//Web Service toggle function
}
checkCounter1 = 1;
}
private void checkBox1_Unchecked(object sender, RoutedEventArgs e)
{
if (checkCounter1 == 0)
{
}
else
{
//Web Service toggle function
}
checkCounter1 = 1;
}
ユーザーがチェックボックスをクリックすると、期待どおりに Web サービス呼び出しが呼び出され、値が切り替えられます。
私の問題は、子ウィンドウがロードされると、これが何らかの理由で で Web サービス呼び出しを呼び出していることcheckBox1_Checked
です。何故かはわからない。したがって、を追加することで、checkCounter
これがページの読み込み時にトグル機能をスキップすることを望んでいました.
ページの読み込み時に、別の Web サービス呼び出しを使用して現在チェックボックスの値を呼び出しています。データベースで値が = から 1 の場合は、フォームでチェックボックスをオンにする必要があります。
void Settings_Loaded(object sender, RoutedEventArgs e)
{
cosainWebService.Service1SoapClient();
client.callFlagsCompleted += new EventHandler<callFlagsCompletedEventArgs>(client_callFlagsCompleted);
client.callFlagsAsync();
}
次に、callFlags の結果を取得して、ここで使用します。
void client_callFlagsCompleted(object sender, callFlagsCompletedEventArgs e)
{
string flag = System.Convert.ToString(e.Result);
foreach (string x in e.Result)
{
string[] array = x.Split(',');
if (array[1] == "Checkbox Name" )
{
if (array[0] == "1") //this is the value in the database
{
checkBox1.IsChecked = true;
}
else
{
}
}
}
}
チェックボックス XAML は次のようになります。
<CheckBox Content="CheckBox Name" Height="16" HorizontalAlignment="Left" Margin="12,42,0,0" Name="checkBox1" VerticalAlignment="Top" Checked="checkBox1_Checked" Unchecked="checkBox1_Unchecked"/>
したがって、デバッグ時にチェックボックスをクリックすると、データベースの値がトグルされるため、ユーザーがボックスをチェックすると、値が「1」として保存され、ウィンドウを閉じて再度ロードし、ボックスにチェックを入れる必要がありますが、何らかの理由でこれが機能せず、ウィンドウが開くと値が切り替わります。どこが間違っていますか?