WPF ComboBox не обновляет высоту при изменении элементовC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 WPF ComboBox не обновляет высоту при изменении элементов

Сообщение Anonymous »

У меня есть Combobox, у которого есть выбранный элемент и исходное связанное.
< /code>
Вот как объявляются соответствующие свойства < /p>
public ObservableCollection Ids { get; } = [];

public string? Id
{
get => _id;
set
{
if (_id != value)
{
_id = value;
OnPropertyChanged();
}
}
}
< /code>
Все привязки работает. Когда элементы в коллекции изменяются, элементы в выпадании меняются. Если ID изменяется программно, обновления ComboBox и наоборот. Тем не менее, какими бы ни были «начальные» значения ComboBox , когда -то загруженные данные, по -видимому, определяют высоту ComboBox при открытии. На следующем скриншоте показан пример этого: изначально было еще несколько элементов, и теперь, когда в коллекции были удалены эти элементы, у нее все еще есть «пространство» для них:
nofling simlediled water industide watfied custome7.png "/> no stimelied wormated water simledied aflicedied aflied aflied aflied aflied aflied water smentledied water industide. чем «свободно» стиль в .net 9. Удаление его из справедливости все еще, кажется, делает современный стиль этих элементов. (Фактически, я попытался удалить все стиль, включая прокладку, и это все еще происходит.) Я должен сделать что -то особенное, чтобы получить ComboBox для изменения размера? Шаги для воспроизведения: < /p>
  • Откройте приложение. Нажмите на один или оба раскрывающихся. Это должно быть выглядеть так
App.xaml





< /code>
MainWindow.xaml









Load Options





< /code>
MainWindow.xaml.cs
using System.Windows;

namespace ComboBoxResizing;

public partial class MainWindow : Window
{
private readonly ViewModel ViewModel;
public MainWindow()
{
InitializeComponent();
ViewModel = (ViewModel)DataContext;
}

private async void LoadStuff(object sender, RoutedEventArgs e)
{
await ViewModel.LoadStuff();
}
}

< /code>
ViewModel.cs
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Collections.ObjectModel;

namespace ComboBoxResizing;

public record Thing(string A, string B);

public class ViewModel : INotifyPropertyChanged
{
private List Things = [];
private string? _a;
private string? _b;

public event PropertyChangedEventHandler? PropertyChanged;

private void OnPropertyChanged([CallerMemberName] string propertyName = "") =>
PropertyChanged?.Invoke(this, new(propertyName));

public ObservableCollection As { get; } = [];

public ObservableCollection Bs { get; } = [];

public string? A
{
get => _a;
set
{
if (_a != value)
{
_a = value;
OnPropertyChanged();

var newBs = Things.Where(t => t.A == A).Select(t => t.B).Distinct();

// Doing this instead of removing all and adding prevents "null" being set if the "B" is in there
foreach (var b in Bs.Except(newBs).ToArray())
Bs.Remove(b);
foreach (var b in newBs.Except(Bs).ToArray())
Bs.Add(b);

B = newBs.Any(b => b == B) ? B : newBs.FirstOrDefault();
}
}
}
public string? B
{
get => _b;
set
{
if (_b != value)
{
_b = value;
OnPropertyChanged();
}
}
}

public async Task LoadStuff()
{
Things.Clear();

await Task.Delay(1_000);

Things =
[
..Enumerable.Range(0, 4).Select(b => new Thing("Foo", b.ToString())),
..Enumerable.Range(0, 15).Select(b => new Thing("Bar", b.ToString())),
..Enumerable.Range(0, 2).Select(b => new Thing("Baz", b.ToString())),
];

As.Clear();
var newAs = Things.Select(t => t.A).Distinct();
foreach (var a in newAs)
As.Add(a);
A = As.FirstOrDefault()!;
}
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... ems-change
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • WPF ComboBox не обновляет высоту при изменении элементов
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • WPF ComboBox не обновляет высоту при изменении элементов
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Textbox WPF ComboBox не обновляется при изменении привязки
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Textbox WPF ComboBox не обновляется при изменении привязки
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Textbox WPF ComboBox не обновляется при изменении привязки
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»