-1

このコードの「if」行にブレークポイントを設定すると、次のようになります。

if ((ckbx.Content != null) && (!ckbx.Content.ToString().Contains("(Empty list)")))
{
    string groupName = ckbx.Content.ToString();
    var contextMenu = new PopupMenu();

    contextMenu.Commands.Add(new UICommand("Edit this Group", contextMenuCmd => Frame.Navigate

    (typeof(LocationGroupCreator), groupName)));

    contextMenu.Commands.Add(new UICommand("Delete this Group", async (contextMenuCmd) =>
    {
        await SQLiteUtils.DeleteGroupAsync(groupName); 
    }));

    await contextMenu.ShowAsync(args.GetPosition(this));
}

...ckbx.Content は "(Empty list)" ですが、条件は false と見なされます - 条件は失敗します。なんで?

4

2 に答える 2

3

...ckbx.Content は "(Empty list)" ですが、条件は false と見なされます - 条件は失敗します。なんで?

条件には、次の結果を否定する論理否定演算子( ) があります。!Contains

 (!ckbx.Content.ToString().Contains("(Empty list)"))

そのため、コンテンツに "(Empty list)" が含まれている場合、Containsは を返しtrue!はそれfalseを にします。これにより、条件が失敗します。

于 2013-01-22T20:04:40.597 に答える
2

(ckbx.Content != null)本当です

(!ckbx.Content.ToString().Contains("(Empty list)")は偽です - あなたはそれが空のリストだったと言いました...そしてこれは空リストではないことをチェックします (前の「!」のおかげで - 「!」はそうでないことを意味します)。

もちろん、true && false は false と同じです

于 2013-01-22T20:05:45.220 に答える