私はSilverlightを初めて使用します。
datagridやその他のフォーム要素を使用したユーザーコントロールがあります。WCFサービスからデータをロードして、プログラムでバインディングを実現しようとしています。
これは私が持っているものです、私はそれを実際に機能させる方法がわかりません:
public class DepartmentObject
{
public Guid Id { get; set; }
public string Name { get; set; }
public IEnumerable<Person> People { get; set; }
}
public partial class DepartmentView : UserControl
{
ObservableCollection<Person> LocalPeople { get; set; }
Service1Client client = new Proj.ServiceReference1.Service1Client();
public TemplateView(Guid departmentId)
{
InitializeComponent();
client.GetDeptCompleted += (sender, e) =>
{
this.DataContext = e.Result; //DepartmentObject w/People member IEnumerable<Person>
this.peopleList.SetBinding(DataGrid.ItemsSourceProperty, new Binding("People"));
LocalPeople = new ObservableCollection<Person>(e.Result.People);
};
client.GetDeptAsync(departmentId);
}
private void Add_Person_Click(object sender, RoutedEventArgs e)
{
LocalPeople.Add(new Person() { Name = String.Format("Person [{0}]", LocalPeople.Count) });
}
}
これで、なぜそれが機能しないのか理解できました。監視可能なコレクションとデータコンテキストの間に「接続」はありませんが、これを行う適切な方法は何ですか?
peopleList
はDataGridであり、人が選択されたときにセカンダリバインディングがあります。
最終的に「保存」を押して、で変更されたすべてのものを取得できるようにしたいと思いますDepartmentObject
。
私は多くの例を経験しましたが、SL 2-3-4の例はすべて異なり、混乱を招きます。