새 Windows Phone 프로젝트를 만들고 Windows Phone 데이터 바인딩 된 템플릿을 사용하면 대부분의 작업이 완료됩니다.
당신이하고 싶은 것은 ViewModel이 앱의 모든 데이터를 포함하도록 설정하는 것입니다. IsolatedStorage를 사용하여이 데이터를 직렬화 및 비 직렬화하여 응용 프로그램 세션 및 삭제 표시 (Tombstoning)에 저장됩니다.
템플릿에서
당신은 MailViewModel 및 ItemViewModel을 알 수 있습니다. MainViewModel은 ObservableCollection of ItemViewModel을 포함하여 애플리케이션에 필요한 모든 데이터를 저장하고 ItemViewModel은 애플리케이션의 개별 데이터 유형을 나타냅니다.
DetailsPage.xaml 페이지에서 각 텍스트 상자를 App.MainViewModel 항목에 바인딩 할 수 있습니다. 사용자가 DetailsPage.xaml에서 데이터를 조작하자마자 ViewModel을 업데이트하려면 바인딩을 TwoWay로 설정하십시오. 필요에 따라 바인딩을 OneWay로 설정 한 다음 변경 사항을 ViewModel에 다시 쓰고 IsolatedStorage에 저장하는 확인 버튼을 사용할 수 있습니다. 여기
는 예 무엇인지와 같은 바인딩 외모 :이 경우 LineOne에서
<TextBlock x:Name="ListTitle" Text="{Binding LineOne}" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
가 ItemViewModel의 속성이며, 사용자가 MainPage에서 항목을 선택하면 페이지가 쿼리 문자열에서이 데이터를 가져 .xaml. 페이지에 대한 DataContext는 데이터 바인딩 된 정보의 출처를 결정합니다.
MainPage가 선택한 항목을 ViewModel에서 DetailsPage로 전달하는 스 니펫입니다.
// Handle selection changed on ListBox
private void MainListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// If selected index is -1 (no selection) do nothing
if (MainListBox.SelectedIndex == -1)
return;
// Navigate to the new page
NavigationService.Navigate(new Uri("/DetailsPage.xaml?selectedItem=" + MainListBox.SelectedIndex, UriKind.Relative));
// Reset selected index to -1 (no selection)
MainListBox.SelectedIndex = -1;
}
다음은 DetailsPage가 선택한 항목을 가져 오는 방법입니다.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string selectedIndex = "";
if (NavigationContext.QueryString.TryGetValue("selectedItem", out selectedIndex))
{
int index = int.Parse(selectedIndex);
DataContext = App.ViewModel.Items[index];
}
}
위의 기본 템플릿으로 주위를 둘러보고 추가 질문을하십시오.
데이터 바인딩과 ObservableCollection의 장점은 데이터를 업데이트 할 수 있으며 UX가 이러한 변경 사항을 반영한다는 것입니다. 이는 데이터 변경으로 인해 이벤트가 발생하기 때문입니다.
public string LineOne
{
get
{
return _lineOne;
}
set
{
if (value != _lineOne)
{
_lineOne = value;
NotifyPropertyChanged("LineOne");
}
}
}
NotifyPropertyChanged()는이 정보를 View에 브로드 캐스팅합니다.
MVC와 WP7을 사용하여 이와 같은 작업을 수행하는 방법에 대한 간단한 예가 있습니까? – webdad3
정말 간단한 예제가 없지만 "데이터 바인딩 된 응용 프로그램"템플릿을 시작하고 어떻게 작동 하는지를 알기 전까지 필자는 그것을 보았다. –
이것은 도움이 될 것입니다. (ASP에 있긴하지만 실제로 MVC에 대한 데모입니다.) http://agilewarrior.wordpress.com/2010/09/18/silverlight-model-view-controller-mvc-example/ –