키/값 쌍의 행을 추가/삭제/편집 할 수있는 컨트롤이 필요합니다. 이것에 가장 적합한 컨트롤은 무엇입니까? 누구든지 예제가 있습니까? 나는 WPF에 대해 아주 처음이다.키/값 쌍을 추가하는 컨트롤?
답변
2 개의 레이블이 붙은 텍스트 상자로 간단한 대화를 사용하면 행이 자동으로 생성되도록 DataGrid
에 바인딩되어야하는 원본 데이터에 새 쌍이 추가됩니다.
편집 : DataGrid 예제 솔루션.
XAML :
<Window
...
DataContext="{Binding RelativeSource={RelativeSource Mode=Self}}">
<StackPanel Orientation="Vertical">
<DataGrid ItemsSource="{Binding GridData}"/>
</StackPanel>
</Window>
코드 숨김 창 클래스에서
:
private ObservableCollection<Pair> gridData = new ObservableCollection<Pair>(new Pair[]{new Pair()});
public ObservableCollection<Pair> GridData
{
get { return gridData; }
}
쌍 클래스 :
public class Pair : INotifyPropertyChanged
{
private string key = "Key";
public string Key
{
get { return key; }
set
{
if (this.key != value)
{
key = value;
NotifyPropertyChanged("Key");
}
}
}
private double value = 0;
public double Value
{
get { return value; }
set
{
if (this.value != value)
{
this.value = value;
NotifyPropertyChanged("Value");
}
}
}
public Pair() { }
public Pair(string key, double value)
: this()
{
Key = key;
Value = value;
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
당신은 정상 데이터 그리드 기능과 함께 새로운 쌍을 추가 할 수 있어야한다 .
MVVM을 사용한다고 가정 할 때 뷰 모델에서 ObservableCollection (쌍 유형)을 사용하거나 System.Collections.Generic.KeyValuePair 유형을 사용하여 자신을 정의하지 않으려는 경우 사용할 수 있습니다.
두 쌍의 텍스트 상자를 사용하여 새 쌍을 추가 할 수 있습니다.이 쌍은 쌍 유형을 인스턴스화하여 ObservableCollection에 추가합니다. 명령을 사용하여보기 모델에서 메소드를 호출하여이를 수행 할 수 있습니다 (또는보기 모델의 동사에 단추와 같은보기 컨트롤의 관례 기반 바인딩을 지원하는 Caliburn.Micro와 같은 프레임 워크를 조사 할 수 있음).
ListBox를 사용하여 쌍의 컬렉션을 표시 할 수 있습니다. ListBox의 ItemsSource 속성을 ObservableCollection 쌍의 뷰 모델에 바인딩하면됩니다. 또는 기존 쌍의 인라인 편집을 지원하려는 경우 DataGrid를 선택하는 것이 좋습니다. DataGrid는 셀 값을 두 번 클릭하여 인라인 편집을 지원합니다.
<DataGrid ItemsSource="{Binding MyPairsCollection}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Key">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Key}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
...
</DataGrid.Columns>
</DataGrid>
'ObservableCollection
@me : KeyValuePairs에 읽기 전용 값이 있다고 생각하지 않았습니다 ... 하지만 어쩌면 그들이 할 수 있습니다.HB가 제시하는대로 자신의 키/값 유형을 구현하는 것이 답입니다. – mpen
- 1. 변수 키/값 쌍을 목록 객체에 추가하는 방법은 무엇입니까?
- 2. 루프를 통해 JSON 객체에 값 쌍을 추가하는 방법은 무엇입니까?
- 3. JQuery에서 전역 변수에 키/값 쌍을 추가하는 방법은 무엇입니까?
- 4. '작업 메뉴'를 추가하는 Windows Forms 컨트롤 디자이너
- 5. STL지도는 첫 번째 쌍을 제거한 후에 쌍을 추가하지 않습니다.
- 6. 무작위 순서로 쌍을 표시
- 7. 쌍을 비교하는 방법은 무엇입니까?
- 8. 지도에 쌍을 삽입하는 방법
- 9. 쌍을 사용하는 행렬 곱셈
- 10. 쌍을 뒤섞는 방법
- 11. 문자열의 "키"/ "값"쌍을 켤 수있는 쌍을 가변 할 때 정규 표현식을 사용할 수 있습니까?
- 12. 입력 요소 쌍을 json으로 변환
- 13. SQL로 열 쌍을 선택하는 방법
- 14. UITableView는 키 값 쌍을 표시합니다.
- 15. 이름 값 쌍을 파싱하는 정규식
- 16. 이름 값 쌍을 xml로 변환합니다.
- 17. dev에있는 레이아웃보기 (그리드 컨트롤)에 단추를 추가하는 방법
- 18. WPF에서 TabControl에 사용자 정의 컨트롤 파생 TabItem을 추가하는 방법은 무엇입니까?
- 19. vb.net에서 사용자 정의 컨트롤 속성에 설명을 추가하는 방법
- 20. jQuery를 사용하여 고유 한 양식 컨트롤 블록을 추가하는 방법은 무엇입니까?
- 21. DIV에 대한 배경 그림을 추가하는 방법, Google지도 사용자 지정 컨트롤
- 22. 하이퍼 링크 컨트롤 항목을 ASP.net ListBox 컨트롤에 추가하는 방법은 무엇입니까?
- 23. 격자보기의 각 단일 셀에 컨트롤을 추가하는 방법 컨트롤
- 24. 사용자 컨트롤 내에 사용자 정의 컨트롤을 동적으로 추가하는 방법
- 25. 윈도우 컨트롤 그리드의 지정된 행과 열에 컨트롤을 추가하는 방법은 무엇입니까?
- 26. 키 => 값 쌍을 배열에 추가하거나 제거하려면 (이미있는 경우)?
- 27. C# 컨트롤 및 컨트롤 참조 찾기
- 28. WPF ListView 컨트롤
- 29. 동적 컨트롤 사용자 컨트롤
- 30. WPF 컨트롤 ListView
는 사용자가 목록에서 기존의 키/값 쌍을 편집하거나 목록에 추가 키/값 쌍을 추가 할 수 있습니다 : 당신은 데이터 그리드 XAML에서 정상 세포 템플릿과 편집 세포 템플릿을 정의 할 수 있습니까? – devdigital
@devdigital : 네, 편집도 도움이 될 것입니다. – mpen