Я довольно новичок в Silverlight.Silverlight - DataContext, DataGrid, WCF и добавление элементов программно со связыванием
У меня есть usercontrol с 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 различны и сбивают с толку.
Спасибо, это работает и добавление нового Человека также работает. Что делать, если я хочу иметь возможность редактировать и сохранять 'DepartmentObject.Name' (или любые дополнительные свойства) - что является правильным способом сделать все« видимым »? – Madd0g
WCF Ria Services обеспечивает отслеживание изменений на стороне клиента, полностью сохраняя данные на стороне сервера. Это разумно способно. –