관찰 컬렉션을 사용하여 WPF Listview에 바인딩 된 목록을 저장하고 있습니다. 제 문제는 프론트 엔드 순서를 작동 시키려고한다는 것입니다. Minutes에서 Move up 버튼을 클릭하면 항목이 위로 이동하지만 목록에 이미 채워진 항목은 변경되지 않습니다. 이것은 쉽지만 쉽게 찾을 수 있어야합니다.위로 이동 목록 위와 아래로 이동
내 질문은 사용자가 아래 시퀀스를 기반으로 마우스를 위로 클릭하고 현재 위치에서 새 위치를 반영하도록 목록의 다른 항목을 업데이트 한 후 반영하도록 주문 번호 위치를 올바르게 변경하는 방법입니다. 기존 요소 또는 새로운 추가 요소의 수를 변경하지 않습니다.
Order Display Name Width
1 Title 50
2 Description 150
나는 새 목록 순서는 다음과 사용
Order Display Name Width
1 Title 50
2 Newitem 50
3 Description 150
코드 메신저를하게되면 내가 위로 이동 버튼을 클릭 버튼을
Order Display Name Width
1 Title 50
2 Description 150
3 Newitem 50
를 추가 사용하여 목록 위에 항목을 추가
ObservableCollection<CustomColumnsModel> columnsList = this.WizardData.ConcreteCustomColumnsProxy;
Extensions.MoveItemUp(columnsList, this.listView1.SelectedIndex);
int offset = 0;
var selectedColumnItem = listView1.SelectedItem as CustomColumnsModel;
foreach (CustomColumnsModel item in columnsList)
{
foreach (CustomColumnsModel item in this.listView1.SelectedItems)
{
item.CustomColumnsOrder -= 1;
}else if (listView1.SelectedItem > item)
{
item.CustomColumnsOrder +1;
}
}
g 내 확장 메서드
public static void MoveItemUp<T>(this ObservableCollection<T> baseCollection, int selectedIndex)
{
//# Check if move is possible
if (selectedIndex <= 0)
return;
//# Move-Item
baseCollection.Move(selectedIndex - 1, selectedIndex);
}
이며,이 제안에 따라 시도 코드를 보여
public class CustomColumnsModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public const string IdPropertyName = "CustomColumnsID";
private Guid _Id = Guid.Empty;
public Guid CustomColumnsID
{
get { return _Id; }
set
{
if (_Id == value)
return;
_Id = value;
NotifyPropertyChanged(IdPropertyName);
}
}
public string CustomColumnsDisplayName { get; set; }
public int CustomColumnsWidth { get; set; }
public int CustomColumnsOrder { get; set; }
protected void NotifyPropertyChanged(string key)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(key));
}
}
public EnterpriseManagementObject ActualData { get; private set; }
편집 내 POCO 클래스입니다
foreach (CustomColumnsModel item in columnsList)
{
if (item.CustomColumnsOrder < item.ColumnIndex)
item.CustomColumnsOrder -= 1;
else if (item.CustomColumnsOrder > item.ColumnIndex)
item.CustomColumnsOrder -= 1;
}
그럼 뭐야? – Noctis
@Noctis 위의 질문을 추가하십시오. 죄송합니다. – rogue39nin