현재 wpf의 컬렉션에있는 특정 항목에 바인딩하려고합니다. 이는 예제로 가장 잘 설명됩니다.WPF 컬렉션의 특정 항목에 바인딩
내 XAML은 다음과 같습니다 :
<Canvas Name="TaskCanvas" Width="467.667" Height="414">
<Ellipse Name="myElipse" Fill="White" Stroke="Black" Width="126" Height="76"
Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}" />
</Canvas>
을 이제 난 그냥 내 데이터 소스에서 x와 y 축에 위치하는 타원의 간단한 예로서 속성에 바인딩하고 볼 수 있습니다.
PosClass posclass = new PosClass();
List<PosClass> posClasses = new List<PosClass>();
posclass.YPos = 100;
posclass.XPos= 100;
posClasses.Add(posclass);
posclass.YPos = 0;
posclass.XPos = 0;
posClasses.Add(posclass);
TaskCanvas.DataContext = posClasses;
지금 나는 내 컬렉션에서 캔버스 cotainer에 결합했다 : 아래 그림과 같이
나는 나의 타원에 내 데이터 소스를 바인딩 할 window_load 이벤트에서 C# 코드가 있습니다. PosClass는 'XPos'와 'YPos'라는 두 가지 속성을 가진 간단한 클래스입니다.
코드 집합을 실행할 때 내 타원이 올바르게있는 데이터 소스에 올바르게 바인딩되어 있지만 타원이 컬렉션의 정확한 행을 가져 오도록 설정되지 않았으므로 기본적으로 마지막 행에서 내 타원을 0으로 설정하므로, 0 위치.
내가 할 수있게하려면 XAML에 첨부 된 컬렉션의 첫 번째 항목을 사용하도록 타원을 설정하거나 더 많은 항목이 있으면 10 번째 항목을 말할 수 있습니다. 다시 XAML에서 이렇게하고 싶습니다. 그래서 현재 X와 Y 위치에 대한 바인딩이 있습니다. 사용할 컬렉션의 행을 지정할 수있는 일종의 구문이 있습니까? 당신은 당신이 사용하는 브라켓에 결합 할 항목을 지정할 수 있습니다
비슷한 문제가 있지만 특정 속성에 특정 값이있는 항목에 바인딩해야합니다. 그래서이 예제에서 PosClass가 PosID라는 속성을 가지고 있다고 상상해보십시오. 나는 PosID = 15에 바인딩하고 싶다. 어떤 아이디어? –