как получить из Scroll View доступ к ComboBoxEdit C# WPF Использую для ленивой подгрузки
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
var scroll = (ScrollViewer)sender;
if (scroll.VerticalOffset == scroll.ScrollableHeight)
{
Console.WriteLine("дошел до конца");
///var combo = LayoutTreeHelper.GetVisualChildren(scroll).OfType<ComboBoxEdit>().FirstOrDefault();
Console.WriteLine(combo.Name);
Console.WriteLine($"Страница: {page}");
///Console.WriteLine(combo.Name);
page++;
}
else
{
Console.WriteLine("дошел до начала");
}
//combobox.ItemsSource = WorkFromData.DataSetting(combobox.Name,"", page,dataset.Label, dataset.Value);
}
Вас спасет привязка данных.
<ComboBox Width="300"
VerticalAlignment="Center"
ItemsSource="{Binding Items}"
MaxDropDownHeight="100"
ScrollViewer.ScrollChanged="ComboBox_ScrollChanged"/>
Изначально закидываю в комбобокс 10 элементов. Как только юзер докрутит до последнего, закидываю еще 5.
public partial class MainWindow : Window, INotifyPropertyChanged
{
private ObservableCollection<string> _items;
public ObservableCollection<string> Items
{
get => _items;
set
{
_items = value;
OnPropertyChanged();
}
}
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Items = new ObservableCollection<string>(Enumerable.Range(0, 10).Select(x => "Item " + x));
}
private void ComboBox_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
ScrollViewer viewer = (ScrollViewer)e.OriginalSource;
if (e.VerticalOffset == viewer.ScrollableHeight)
{
int count = Items.Count;
for (int i = count; i < count + 5; i++)
Items.Add("Item " + i);
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
Обратите внимание, что e.VerticalOffset
и viewer.ScrollableHeight
по умолчанию содержат позицию элемента в списке, а не пиксели.
Всем приветНужно использовать "временный" сервер для одного сайта и для одного пользователя
В Visual Studio можно объявить конструктор класса и задать в нем все необходимые параметры, а потом нажать CTRL+и создать приватное поле, которое...
Не получается обновить dataGridView после добавления данных в БДЕсть AssortmentForm на которой расположен dataGridView,а на дочерней форме добавляется запись...
Идея такая: есть исполняемый файл, написанный на C# (консольная программа)Он находится на флешке