이 질문은 내 마지막 질문과 비슷하게 들릴 수 있지만 다른 조언에서 취하는 다른 접근 방법입니다. 다른 경로로 나가 listview에서 whats를 몇 개의 텍스트 상자에 바인딩하려고합니다. 나는 WPF에 매우 익숙하다. 그리고 내가 제대로하고 있는지 확실하지 않다. MVVP 방식이라고 생각합니다. 지금은 프로그램이별로 효과가 없습니다. 목록보기에는 항목이 하나 있지만 비어 있습니다 (이름, 나이, 학년 없음). 내가 목록보기에서 선택하려고 할 때 강조 표시하는 항목 b/c를 볼 수 있습니다. 어떤 도움이라도 대단히 감사합니다.ObservableCollection 및 WPF 바인딩 사용
문자열 이름, int 나이, int 등급을 만드는 클래스가 있으며 getter 및 setter 메서드가 있습니다. ObservableCollection에
public class Camper
{
public Camper[] requests;
public int[] relationValues;
public String name;
private String school;
public int age;
public int grade;
private Boolean isGrouped = false;
private string group;
public Camper(int a, int g, String n)
{
requests = new Camper[4];
relationValues = new int[4];
name = n;
this.age = a;
this.grade = g;
}
public Camper(String n)
{
this.requests = new Camper[4];
this.relationValues = new int[4];
this.name = n;
}
public Camper()
{
}
// Getter Methods
public string getName()
{
return name.ToString();
}
public string getSchool()
{
return this.school;
}
public int getAge()
{
return this.age;
}
public int getGrade()
{
return this.grade;
}
public int getRelationValue(int i)
{
if (i < relationValues.Length)
{
return relationValues[i];
}
else
{
return 0;
}
}
class BindingCamper
{
public ObservableCollection<Camper> Campers { get; private set; }
public BindingCamper()
{
Campers = new ObservableCollection<Camper>();
}
또 다른 클래스 (페이지)를 만드는 :
public partial class CampersPage : Page
{
MainWindow _parentForm;
public ObservableCollection<Camper> Campers { get; private set; }
public CampersPage(MainWindow parent)
{
_parentForm = parent;
InitializeComponent();
// Campers = new ObservableCollection<Camper>();
var bindMe = new BindingCamper();
Camper CampMe = new Camper(3, 4, "Tony Lagarrigue");
// CampMe.getName();
bindMe.Campers.Add(CampMe);
DataContext = bindMe;
XAML에 클래스의 이름은 야영 자 (연령, 학년, 이름)
클래스 BindingCamper라고 모든 것을 묶어 라. :
<ListView HorizontalAlignment="Left" Margin="10,10,0,40" x:Name ="listViewCampers" Width="200" SelectionChanged="listViewCampers_SelectionChanged" ItemsSource="{Binding Campers}" DisplayMemberPath="name" IsSynchronizedWithCurrentItem="{x:Null}">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="100" />
<GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" Width="40" />
<GridViewColumn Header="Grade" DisplayMemberBinding="{Binding Grade}" Width="40" />
</GridView>
</ListView.View>
</ListView>
<Grid Height="Auto" HorizontalAlignment="Stretch" Margin="209,12,0,0" Name="infoGrid" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="134*" />
<RowDefinition Height="154*" />
</Grid.RowDefinitions>
<Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="23,24,0,0" Name="lblName" VerticalAlignment="Top" />
<TextBox Text="{Binding name, ElementName=listViewCampers}" Height="23" HorizontalAlignment="Left" Margin="23,46,0,0" Name="txtName" VerticalAlignment="Top" Width="120" AcceptsReturn="True" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="23,103,0,0" Name="txtAge" VerticalAlignment="Top" Width="120" />
'Camper' 클래스를 표시하십시오. – SLaks
Ok 편집했습니다. :) – TMan
데이터 바인딩을 처음 사용하는 경우 [개요] (http://msdn.microsoft.com/en-us/library/ms752347.aspx)를 읽으십시오. –