ListView для NumberBox с минимальным ограничением искажает значение при заказеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ListView для NumberBox с минимальным ограничением искажает значение при заказе

Сообщение Anonymous »

Рассмотрим этот минимальный пример:
xaml: cs:

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices.WindowsRuntime;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Media.Capture.Frames;

namespace NumberboxText;

public class TestItem : INotifyPropertyChanged
{
private int _order;
private int _min;
private int _current;

public event PropertyChangedEventHandler? PropertyChanged;

public int Order
{
get => _order;
set => SetProperty(ref _order, value);
}

public int Min
{
get => _min;
set => SetProperty(ref _min, value);
}

public int Current
{
get => _current;
set => SetProperty(ref _current, value);
}

protected void SetProperty(ref T field, T value, [CallerMemberName] string propertyName = null)
{
field = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

}
public sealed partial class MainWindow : Window
{
public readonly ObservableCollection Items = [];
public MainWindow()
{
this.InitializeComponent();
Items.Add(new TestItem { Order = 3, Min = 3, Current = 3 });
Items.Add(new TestItem { Order = 1, Min = 1, Current = 1 });
Items.Add(new TestItem { Order = 4, Min = 4, Current = 4 });
Items.Add(new TestItem { Order = 2, Min = 2, Current = 2 });

}

private void Button_Click(object sender, RoutedEventArgs e)
{
for (var i = Items.Count - 1; i >= 0; i--)
{
for (var j = 1; j  Items[j].Order)
{
Items.Move(j - 1, j);
}
}
}
}
}

Когда я нажимаю кнопку сортировки, я получаю это;
[img]https:/ /i.sstatic.net/iV1Ms4ej.png[/img]

Похоже, что просмотр списка пытается изменить значения числового поля на месте, но не может из-за ограничения Минимум, вызывая изменение значений.
Следует ли мне считать это ошибкой, о которой следует сообщить, или есть способ заставить это работать?

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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