簡體   English   中英

WP7中的主細節綁定

[英]Master Detail Binding in WP7

我在WP7中綁定時遇到問題,找不到可以幫助您的示例或博客。 我的應用程序具有ViewModel,當從主頁(列表)導航到編輯/詳細信息頁面時,我在顯示正確綁定到同一頁面上的ListPicker和Object數據時遇到問題。 我設法完成了這項工作,但希望找到最佳實踐。

例如我有一個課:

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; }
    }

並將一個可觀察的集合添加到我的ViewModel中:

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;
}

這感覺像是一個真正的hack,可能不是最佳實踐。 我是否在這里缺少任何東西,如果可以的話,有沒有更好的方法來實現這一目標?

我不會將您的代碼歸類為hack,這很簡單並且可以完成工作。 您可以利用MVVM模式並創建一個視圖模型,以“備份”頁面,其中包含所選人員和性別:

public PersonDetailsViewModel
{
  public Person SelectedPerson {get;set;}
  public ObservableCollection<TypeList> GenderList {get;set;}
}

然后,您可以將此視圖模型的實例設置為視圖的DataContext ,然后在XAML中綁定各種UI控件。

但是,正如我之前所說,您當前的代碼完全沒有錯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM