我在WP7中遇到了綁定問題,無法找到有助於解決問題的示例或博客。我的應用程序有一個ViewModel,當從一個主頁面(列表)瀏覽到一個編輯/詳細頁面時,我遇到了在同一頁面上正確顯示ListPicker和Object數據的問題。我已經成功完成了這項工作,但希望爲此找到最佳做法。WP7中的主要細節綁定
比如我有一個類:
public class Person
{
public string Name { get; set; }
public string Gender { get; set; }
}
類也是在我的視圖模型引用:
public Person selectedPerson;
private Person _person
{
get { return _person; }
set
{
_person= value;
NotifyPropertyChanged("selectedPerson");
}
}
我有一個Detail.xaml頁:
<StackPanel x:Name="PersonEditPanel">
<TextBox x:Name="NameTextBox" Text="{Binding Name}" />
<TextBox x:Name="GenderTextBox" Text="{Binding Gender}" />
</Stackpanel>
而且在我的代碼背後,我有:
private void PhoneApplicationPage_Loaded(object sender, EventArgs e)
{
DataContext = App.ViewModel.selectedPerson;
}
以上是好的,但我想爲Gender屬性添加一個ListPicker以改善用戶體驗。
要做到這一點,我添加了一個新的類:
public class TypeList
{
public int ID { get; set; }
public string Name { get; set; }
}
,加入一個觀察集合到我的視圖模型:
private ObservableCollection<TypeList> _PersonGenderTypeList;
public ObservableCollection<TypeList> PersonGenderTypeList
{
get { return _PersonGenderTypeList; }
set
{
_PersonGenderTypeList = value;
NotifyPropertyChanged("PersonGenderTypeList");
}
}
我已經嘗試了許多選項的唯一途徑,我可以找到在哪裏我能夠看到正確綁定的人名和性別列表在屏幕上(同時)選取和填充如下:
private void PhoneApplicationPage_Loaded(object sender, EventArgs e)
{
DataContext = App.ViewModel.selectedPerson;
GenderTypeListPicker.ItemsSource = App.ViewModel.PersonGenderTypeList;
}
這感覺像一個真正的黑客,可能不是最佳實踐。我在這裏錯過了什麼,如果有的話是否有更好的方法來實現這一目標?
我認爲這樣做可以完成這個工作,並且可以在您提到的類中使用。 如果您只想設置datacontext,則需要創建一個PersonViewModel,該PersonViewModel將暴露Name,Gender和ObservableCollection PersonGenderTypeList。對我來說,這聽起來像是一個更糟糕的黑客,而不是像剛纔那樣設置itemssource。 – 2012-07-29 16:58:15