Advertisement
Jmat4119

Sample page code xaml + c#

Mar 7th, 2014
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.47 KB | None | 0 0
  1. <ItemsControl ItemsSource="{Binding ShelfItemsCollection}" Name="shelfGridView" Margin="5" Visibility="Collapsed" >
  2. <ItemsControl.ItemTemplate>
  3. <DataTemplate>
  4. <Border Style="{StaticResource ResourceKey=shelfBorderStyle}" MinWidth="200">
  5. <StackPanel Name="LibraryPanel">
  6. <Grid>
  7. <Button Name="bookThumbnail" Padding="5" Tag="{Binding}" Click="BookImage_Click" Style="{StaticResource ResourceKey=shelfBookThumbnail}" >
  8. <Image Width="150" Height="200" Stretch="Fill" Source="{Binding CoverImage}" ></Image>
  9. </Button>
  10. <DockPanel LastChildFill="True" Name="DownloadProgress">
  11. <Button DockPanel.Dock="Right" Name="btncancelDownloadGView" Tag="{Binding}" Click="btncancelDownloadGView_Click" Style="{StaticResource ResourceKey=PopupCloseButton}" ToolTip="{Binding Path=localResource.library_CancelDownload,Source={StaticResource DbookLanguageManagerDynamic}}" Margin="5,0"></Button>
  12. <ProgressBar Background="Black" Height="20" Margin="10,0" Value="{Binding Progress}" VerticalAlignment="Center" HorizontalAlignment="Stretch" >
  13. <ProgressBar.ToolTip>
  14. <ToolTip>
  15. <StackPanel Orientation="Horizontal">
  16. <Label Content="{Binding Progress}"/>
  17. <Label Content="%" Margin="2,0"/>
  18. </StackPanel>
  19. </ToolTip>
  20. </ProgressBar.ToolTip>
  21. </ProgressBar>
  22. </DockPanel>
  23. </Grid>
  24. <Grid>
  25. <Grid.RowDefinitions>
  26. <RowDefinition></RowDefinition>
  27. <RowDefinition></RowDefinition>
  28. </Grid.RowDefinitions>
  29. <Grid.ColumnDefinitions>
  30. <ColumnDefinition></ColumnDefinition>
  31. <ColumnDefinition></ColumnDefinition>
  32. </Grid.ColumnDefinitions>
  33. <TextBlock Text="{Binding Title}" Style="{StaticResource ResourceKey=shelfNameStyle}" TextTrimming="CharacterEllipsis" MaxWidth="150" Grid.Column="0" Grid.Row="0"></TextBlock>
  34. <TextBlock Text="{Binding Info}" Style="{StaticResource ResourceKey=shelfInfoStyle}" TextTrimming="CharacterEllipsis" MaxWidth="150" Grid.Column="0" Grid.Row="1"></TextBlock>
  35. <Button Name="downloadButton" Click="downloadButton_Click" Tag="{Binding}" Style="{StaticResource ResourceKey=ShelfDownloadButton}" ToolTip="{Binding Path=localResource.library_DownloadBook,Source={StaticResource DbookLanguageManagerDynamic}}" Grid.Column="1" Grid.Row="0" Grid.RowSpan="2"></Button>
  36. </Grid>
  37. </StackPanel>
  38. </Border>
  39. <DataTemplate.Triggers>
  40. <DataTrigger Binding="{Binding Status}" Value="read">
  41. <Setter TargetName="bookThumbnail" Property="Cursor" Value="Hand"/>
  42. <Setter TargetName="archiveBook" Property="Visibility" Value="Visible"/>
  43. <Setter TargetName="downloadButton" Property="Visibility" Value="Collapsed"/>
  44. <Setter TargetName="DownloadProgress" Property="Visibility" Value="Collapsed"/>
  45. </DataTrigger>
  46. <DataTrigger Binding="{Binding Status}" Value="download">
  47. <Setter TargetName="bookThumbnail" Property="Cursor" Value="Arrow"/>
  48. <Setter TargetName="archiveBook" Property="Visibility" Value="Collapsed"/>
  49. <Setter TargetName="downloadButton" Property="Visibility" Value="Visible"/>
  50. <Setter TargetName="DownloadProgress" Property="Visibility" Value="Collapsed"/>
  51. </DataTrigger>
  52. <DataTrigger Binding="{Binding Status}" Value="downloading">
  53. <Setter TargetName="bookThumbnail" Property="Cursor" Value="No"/>
  54. <Setter TargetName="archiveBook" Property="Visibility" Value="Collapsed"/>
  55. <Setter TargetName="downloadButton" Property="Visibility" Value="Collapsed"/>
  56. <Setter TargetName="downloadButton" Property="IsEnabled" Value="False"/>
  57. <Setter TargetName="DownloadProgress" Property="Visibility" Value="Visible"/>
  58. </DataTrigger>
  59. </DataTemplate.Triggers>
  60. </DataTemplate>
  61. </ItemsControl.ItemTemplate>
  62. <ItemsControl.ItemsPanel>
  63. <ItemsPanelTemplate>
  64. <WrapPanel Orientation="Horizontal" />
  65. </ItemsPanelTemplate>
  66. </ItemsControl.ItemsPanel>
  67. </ItemsControl>
  68.  
  69.  
  70. public ObservableCollection<LocalLibrary> ShelfItemsCollection
  71. { get { return thisApp.appShelf; } }
  72.  
  73. serverReader_DoWork.RunWorkerAsync() in page load event.
  74.  
  75. private void serverReader_DoWork(object sender, DoWorkEventArgs e)
  76. {
  77. BackgroundWorker worker = sender as BackgroundWorker;
  78. try
  79. {
  80. List<DPMLibrary> server_data = new List<DPMLibrary>();
  81. try
  82. {
  83. //mke an http request and based on response fill data of variable server_data
  84.  
  85. }
  86. catch //Some exceptions occured while reading from server, so read the result from cache--OR OFFLINE MODE SO showonly downloaded books
  87. {
  88.  
  89. }
  90.  
  91. foreach(DPMLibrary item in server_data)
  92. {
  93. LocalLibrary model = new LocalLibrary();
  94. model.Id = item.Id;
  95. model.Name = item.Name;
  96. model.Date = DateTime.Parse(item.Date);
  97. model.Cover = item.Cover;
  98. model.CoverImage =GetCoverImage(item.Id, model.Cover); //for testing pass any image url
  99. model.Title = item.Title;
  100. model.Info = item.Info;
  101. model.Url = item.Url;
  102. model.IsActive = true;
  103. //based on some condition set value of Status
  104. if (Directory.Exists(directory_name))
  105. {
  106. model.Status = BookStatus.read;
  107. }
  108. else//but not found files in destination path , so need to download again..
  109. {
  110. model.Status = BookStatus.download;
  111. }
  112. worker.ReportProgress(5,model);
  113. }
  114. }
  115. catch (Exception ex)
  116. {
  117. throw ex;
  118. }
  119.  
  120. }
  121. private void serverReader_ReportProgress(object sender, ProgressChangedEventArgs e)
  122. {
  123. txtProgress.Text = DbookLanguage.message_pleasewait;
  124. if (e.ProgressPercentage == 5)
  125. {
  126. LocalLibrary item = (LocalLibrary)e.UserState;
  127. thisApp.appShelf.Add(item);
  128. }
  129. }
  130. private void serverReader_WorkFinished(object sender, RunWorkerCompletedEventArgs e)
  131. {
  132.  
  133. }
  134.  
  135. private void btnCloudView_Click(object sender, RoutedEventArgs e)
  136. {
  137. SwitchToCloudView();
  138. }
  139.  
  140. private void SwitchToCloudView()
  141. {
  142. ICollectionView dataView = CollectionViewSource.GetDefaultView(shelfGridView.ItemsSource);
  143. dataView.Filter = CloudFilter;
  144. dataView.Refresh();
  145. Keyboard.ClearFocus();
  146. }
  147. private bool CloudFilter(object item)
  148. {
  149. LocalLibrary lib = item as LocalLibrary;
  150. return lib.Status !=null;
  151. }
  152.  
  153. public enum BookStatus { download,read,downloading};
  154.  
  155. public class LocalLibrary : INotifyPropertyChanged
  156. {
  157. public event PropertyChangedEventHandler PropertyChanged;
  158. private void NotifyChange(PropertyChangedEventArgs e)
  159. {
  160. if (PropertyChanged != null)
  161. PropertyChanged(this, e);
  162. }
  163. private string id { get; set; }
  164. private string name { get; set; }
  165. private DateTime date { get; set; }
  166. private string title { get; set; }
  167. private string info { get; set; }
  168. private string cover { get; set; }
  169. private string url { get; set; }
  170. private bool active { get; set; }
  171. private BookStatus status { get; set; }
  172. private string progress { get; set; }
  173. private ImageSource coverimage { get; set; }
  174.  
  175. public string Id
  176. {
  177. get { return id; }
  178. set
  179. {
  180. id = value;
  181. NotifyChange(new PropertyChangedEventArgs("Id"));
  182. }
  183. }
  184. public string Name
  185. {
  186. get { return name; }
  187. set
  188. {
  189. name = value;
  190. NotifyChange(new PropertyChangedEventArgs("Name"));
  191. }
  192. }
  193. public DateTime Date
  194. {
  195. get { return date; }
  196. set
  197. {
  198. date = value;
  199. NotifyChange(new PropertyChangedEventArgs("Date"));
  200. }
  201. }
  202. public string Title
  203. {
  204. get { return title; }
  205. set
  206. {
  207. title = value;
  208. NotifyChange(new PropertyChangedEventArgs("Title"));
  209. }
  210. }
  211. public string Info
  212. {
  213. get { return info; }
  214. set
  215. {
  216. info = value;
  217. NotifyChange(new PropertyChangedEventArgs("Info"));
  218. }
  219. }
  220. public string Cover
  221. {
  222. get { return cover; }
  223. set
  224. {
  225. cover = value;
  226. NotifyChange(new PropertyChangedEventArgs("Cover"));
  227. }
  228. }
  229.  
  230. public string Url
  231. {
  232. get { return url; }
  233. set
  234. {
  235. url = value;
  236. NotifyChange(new PropertyChangedEventArgs("Url"));
  237. }
  238. }
  239.  
  240. public bool IsActive
  241. {
  242. get { return active; }
  243. set
  244. {
  245. active = value;
  246. NotifyChange(new PropertyChangedEventArgs("IsActive"));
  247. }
  248. }
  249.  
  250. public BookStatus Status
  251. {
  252. get { return status; }
  253. set
  254. {
  255. status = value;
  256. NotifyChange(new PropertyChangedEventArgs("Status"));
  257. }
  258. }
  259.  
  260. public string Progress
  261. {
  262. get { return progress; }
  263. set
  264. {
  265. progress = value;
  266. NotifyChange(new PropertyChangedEventArgs("Progress"));
  267. }
  268. }
  269.  
  270. public ImageSource CoverImage
  271. {
  272. get { return coverimage; }
  273. set
  274. {
  275. coverimage = value;
  276. NotifyChange(new PropertyChangedEventArgs("CoverImage"));
  277. }
  278. }
  279. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement