Beispiel #1
0
        private void OnChildCheckedChanged(bool?oldValue, bool?newValue)
        {
            switch (oldValue)
            {
            case null:
                Interlocked.Decrement(ref _unknownCount);
                break;

            case true:
                Interlocked.Decrement(ref _checkedCount);
                break;
            }

            switch (newValue)
            {
            case null:
                Interlocked.Increment(ref _unknownCount);
                break;

            case true:
                Interlocked.Increment(ref _checkedCount);
                break;
            }

            _checkedChanger = CheckedChanger.Child;

            try
            {
                if (_unknownCount > 0)
                {
                    IsChecked = null;
                }
                else if (_checkedCount > 0)
                {
                    IsChecked = _checkedCount == GetChilds().Length ? (bool?)true : null;
                }
                else
                {
                    IsChecked = false;
                }
            }
            finally
            {
                _checkedChanger = CheckedChanger.Manual;
            }
        }
Beispiel #2
0
        private void OnChildCheckedChanged(bool? oldValue, bool? newValue)
        {
            switch (oldValue)
            {
                case null:
                    Interlocked.Decrement(ref _unknownCount);
                    break;
                case true:
                    Interlocked.Decrement(ref _checkedCount);
                    break;
            }

            switch (newValue)
            {
                case null:
                    Interlocked.Increment(ref _unknownCount);
                    break;
                case true:
                    Interlocked.Increment(ref _checkedCount);
                    break;
            }

            _checkedChanger = CheckedChanger.Child;

            try
            {
                if (_unknownCount > 0)
                    IsChecked = null;
                else if (_checkedCount > 0)
                    IsChecked = _checkedCount == GetChilds().Length ? (bool?)true : null;
                else
                    IsChecked = false;
            }
            finally
            {
                _checkedChanger = CheckedChanger.Manual;
            }
        }