ListBox
을 ObservableCollection
으로 채우려고합니다. 그러나 새 항목을 추가 할 때 아무것도 표시되지 않으면 빈 항목 만 추가됩니다. XAML
ObservableCollection 및 DisplayMemberBinding
<ListView ItemsSource="{Binding Points}" SelectedItem="{Binding Point}">
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn Header ="X" Width="100" DisplayMemberBinding = "{Binding Path=ValueX, Mode=TwoWay}" />
<GridViewColumn Header ="Y" Width="100" DisplayMemberBinding = "{Binding Path=ValueY, Mode=TwoWay}"/>
</GridView>
</ListView.View>
</ListView>
Window 클래스
var value = new Value();
var viewModel = new ViewModel(value);
DataContext = viewModel;
InitializeComponent();
값 클래스
private const Point POINT = null;
private readonly ObservableCollection<Point> _points = new ObservableCollection<Point>();
public Value() {
Point = POINT;
Points = _points;
}
public Point Point { get; set; }
public ObservableCollection<Point> Points { get; private set; }
public double ValueX { get; set; }
public int ValueY { get; set; }
뷰 모델 클래스
012 :내 코드의 조각이있다
및 포인트 클래스
public class Point {
public readonly double ValueX;
public readonly double ValueY;
public Point(double valueX, double valueY) {
ValueX = valueX;
ValueY = valueY;
}
public override string ToString() {
return (ValueX + " " + ValueY);
}
}
내가 새 항목을 추가 할 때 새 항목이 추가되지만 아무것도 표시되지 않습니다. 무슨 이유가 여기 있니? 당신이 각 항목 ValueX
및 ValueY
이 유효 바인딩 소스 수없는 필드로 선언있는 Point
유형을 의미 ItemsSource
ObservableCollection<Point>
에 결합하기 때문에
혼란 스러울 것 같은데 ... 왜 당신은 당신의 뷰 모델에서 데이터 타입 프로퍼티를 구현 했습니까? 거기에'ValueX'와'ValueY'를'OnPropertyChanged'와 함께 쓰면 안됩니다 ... 당신은'Point' 데이터 타입에 * 그 코드가 있어야합니다. Visual Studio의 출력 창에 바인딩 오류가 표시됩니다 ... 무엇이 표시됩니까? – Sheridan
아니요, 예외가 없습니다 – Bashnia007
Visual Studio에서 도구> 옵션> 디버깅> 출력 창> WPF 추적 설정으로 이동하여 '데이터 바인딩'옵션을 '경고'또는 '오류'로 설정하십시오. MSDN의 [방법 : WPF 추적 정보 표시] (http://msdn.microsoft.com/en-us/library/dd409960.aspx) 페이지에서 자세한 내용을 확인할 수 있습니다. – Sheridan