private void ScrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            if ((int)(e.VerticalOffset / (e.ExtentHeight - e.ViewportHeight) * 100) >= RatioTriggeringScroll)
            {
                if (Items.Count < Data.Count)
                {
                    int itemsCount = Items.Count;

                    for (int i = itemsCount; i < (itemsCount + MuchToOutput < Data.Count ? itemsCount + MuchToOutput : Data.Count); i++)
                    {
                        var checkBox = new CheckBoxForExpander();
                        checkBox.VerticalAlignment   = VerticalAlignment.Top;
                        checkBox.HorizontalAlignment = HorizontalAlignment.Left;
                        checkBox.Margin            = new Thickness(10, 10 + (i * 30), 0, 0);
                        checkBox.IsChecked         = ContainsValue(Data[i]);
                        checkBox.Data              = Data[i];
                        checkBox.DisplayMemberPath = DisplayMemberPath;
                        checkBox.SelectedValuePath = SelectedValuePath;
                        checkBox.CheckedChanged   += CheckBox_CheckedChanged;
                        Items.Add(checkBox);

                        RenderContorl(checkBox);
                    }
                }
            }
        }
        private void GenerateItems()
        {
            Items.Clear();

            for (int i = 0; i < (Data.Count > StartupToOutput ? StartupToOutput : Data.Count); i++)
            {
                var checkBox = new CheckBoxForExpander();
                checkBox.VerticalAlignment   = VerticalAlignment.Top;
                checkBox.HorizontalAlignment = HorizontalAlignment.Left;
                checkBox.Margin            = new Thickness(10, 10 + (i * 30), 0, 0);
                checkBox.IsChecked         = ContainsValue(Data[i]);
                checkBox.Data              = Data[i];
                checkBox.DisplayMemberPath = DisplayMemberPath;
                checkBox.SelectedValuePath = SelectedValuePath;
                checkBox.CheckedChanged   += CheckBox_CheckedChanged;
                Items.Add(checkBox);
            }
        }