Windows Phone 十二、设计器同步

在设计阶段为页面添加数据源

Blend或者VS的可视化设计器会跑我们的代码,然后来显示出来,当我们Build之后,设计器会进入页面的构造函数,调用InitializeComponent();方法来将UI渲染然后呈现给我们。

DesignMode.DesignModeEnabled获取指示进程是否在设计模式下运行的值。

d:DataContext="{d:DesignInstance Type=data:MainPageViewModel,IsDesignTimeCreatable=True}"

 1 <Page
 2     x:Class="MyAPP.MainPage"
 3     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 4     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 5     xmlns:local="using:MyAPP"
 6     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 7     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 8     mc:Ignorable="d"
 9     Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
10     DataContext="{Binding ViewModel,RelativeSource={RelativeSource Mode=Self}}"
11     d:DataContext="{d:DesignInstance Type=local:MainPageViewModel,IsDesignTimeCreatable=True}">
12
13     <Grid>
14         <TextBlock Text="{Binding Name}"/>
15         <ListView ItemsSource="{Binding Person}">
16             <ListView.ItemTemplate>
17                 <DataTemplate>
18                     <Border
19                         BorderBrush="HotPink"
20                         BorderThickness="5"
21                         Padding="20"
22                         Margin="10">
23                         <StackPanel>
24                             <TextBlock
25                                 FontSize="20"
26                                 Text="{Binding Id}"/>
27                             <TextBlock
28                                 FontSize="30"
29                                 Text="{Binding Name}"/>
30                         </StackPanel>
31                     </Border>
32                 </DataTemplate>
33             </ListView.ItemTemplate>
34         </ListView>
35         <!--<Border
36             BorderBrush="HotPink"
37             BorderThickness="5"
38             Padding="20"
39             Margin="10">
40             <StackPanel>
41                 <TextBlock
42                     FontSize="20"
43                     Text="11"/>
44                 <TextBlock
45                     FontSize="30"
46                     Text="zhang"/>
47             </StackPanel>
48         </Border>-->
49     </Grid>
50 </Page>
 1 namespace MyAPP
 2 {
 3     /// <summary>
 4     /// 可用于自身或导航至 Frame 内部的空白页。
 5     /// </summary>
 6     public sealed partial class MainPage : Page
 7     {
 8         public MainPageViewModel ViewModel { get; set; }
 9         public MainPage()
10         {
11             ViewModel = new MainPageViewModel();
12             for (int i = 0; i < 30; i++)
13             {
14                 ViewModel.Person.Add(new Person { Id = 1, Name = "Hello" });
15             }
16             this.InitializeComponent();
17
18             this.NavigationCacheMode = NavigationCacheMode.Required;
19         }
20
21         /// <summary>
22         /// 在此页将要在 Frame 中显示时进行调用。
23         /// </summary>
24         /// <param name="e">描述如何访问此页的事件数据。
25         /// 此参数通常用于配置页。</param>
26         protected override void OnNavigatedTo(NavigationEventArgs e)
27         {
28             // TODO: 准备此处显示的页面。
29
30             // TODO: 如果您的应用程序包含多个页面,请确保
31             // 通过注册以下事件来处理硬件“后退”按钮:
32             // Windows.Phone.UI.Input.HardwareButtons.BackPressed 事件。
33             // 如果使用由某些模板提供的 NavigationHelper,
34             // 则系统会为您处理该事件。
35         }
36     }
37     //想在设计器预览数据绑定结果
38     //第一步:在视图模型的构造函数中造一些假数据,放到if (DesignMode.DesignModeEnabled)中,为了执行效率,加上#if DEBUG
39     //第二步:在数据源定义的节点Page 定义d:DataContext
40     //d:DataContext="{d:DesignInstance Type=local:MainPageViewModel,IsDesignTimeCreatable=True}"
41     public class MainPageViewModel
42     {
43         public MainPageViewModel()
44         {
45             Person = new ObservableCollection<Person>();
46 #if DEBUG
47             //设计器也会运行我们的代码
48             if (DesignMode.DesignModeEnabled)
49             {
50                 for (int i = 0; i < 30; i++)
51                 {
52                     Person.Add(new Person { Id = i, Name = "设计器" });
53                 }
54                 Name = "小黑";
55             }
56 #endif
57         }
58         public ObservableCollection<Person> Person { get; set; }
59         public string Name { get; set; }
60     }
61     public class Person
62     {
63         public int Id { get; set; }
64         public string Name { get; set; }
65     }
66 }
时间: 2024-12-26 07:02:49

Windows Phone 十二、设计器同步的相关文章

嵌入式 Linux进程间通信(十二)——多线程同步

嵌入式 Linux进程间通信(十二)--多线程同步 多线程编程中有三种线程同步机制:互斥锁.信号量.条件量.本文将使用生产者消费者问题编程实践三种线程同步方式. 生产者.消费者问题:生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费.消费者线程从缓冲区中获得物品,然后释放缓冲区.当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区.当消费者线程消费物品时,如果没有满的缓冲区,那么消费者线程将被阻塞,直到新的物品被生产出来. 一.互斥锁

Win32 Windows编程 十二

一.对话框 1.对话框的分类 2.对话框的基本使用方式 3.对话框资源 4.有模式对话框的使用 5. 无模式对话框的使用 5.1 添加对话框资源 5.2 定义窗口处理函数 BOOL CALLBACK DialogProc( HWND hWnd, UINT UMsg, WPARAM wParam, LPARAM lParam ) 5.3 创建对话框 HWND CreateDialog( HINSTANCE hInstance, // handle to module LPCTSTR lpTempl

转---秒杀多线程第十二篇 多线程同步内功心法——PV操作上

阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇一个经典的多线程同步问题> <秒杀多线程第五篇经典线程同步关键段CS> <秒杀多线程第六篇经典线程同步事件Event> <秒杀多线程第七篇经典线程同步互斥量Mutex> <秒杀多线程第八篇经典线程同步信号量Semaphore> <秒杀多线程第九篇经典线程同步总结关键段事件互斥量信号量> <秒杀多线程第十篇生产者消费者问题> <秒杀多线程第十一篇读者写者问题>

秒杀多线程第十二篇 多线程同步内功心法——PV操作上

阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇一个经典的多线程同步问题> <秒杀多线程第五篇经典线程同步关键段CS> <秒杀多线程第六篇经典线程同步事件Event> <秒杀多线程第七篇经典线程同步互斥量Mutex> <秒杀多线程第八篇经典线程同步信号量Semaphore> <秒杀多线程第九篇经典线程同步总结关键段事件互斥量信号量> <秒杀多线程第十篇生产者消费者问题> <秒杀多线程第十一篇读者写者问题>

Office 365系列之十二:ActiveDirectory同步

在实际企业环境中,绝大部分公司已经有域环境了,也有自己内部的域用户和用户组.如果使用O365服务后又是独立的一套账号和密码,这对用户来说非常不方便,对于企业管理员来说也不好管理,必须得管理2套不同的用户和策略.由此对于O365微软提供了以下解决方案,我们来看看这几种方案有何区别: 今天我们先一起了解和配置目录使用密码同步的目录同步方案,这样即可实现通过内部用户名和密码登录O365云服务. 目录同步方案- 用于将本地目录对象(用户.组.联系人)同步到云中,以帮助减少管理开销.在英文中,direct

OGG运维优化脚本(十二)-信息同步类--信息上传

文件: upload.sh 路径:$HOME/ggscript/ggupload 功能:该脚本不会直接使用,为满足其他脚本进行信息上传而设计,在脚本内直接调用上传相应的文件信息 他会读取系统信息配置文件sysinfo内的系统配置信息 范例 [detest#] Ip-MTMyLjEyMS4xMDEuODYK UserName-Z2dzCg== PassWord-Z2dzxxxxxx Port-MjIK path-L2RhdGExL2dncy9nZ3NlcnZlci9kaXJkZWYK [#dete

Windows 窗体设计器中的设计时错误

在用 VS.NET进行窗体设计的时候,经常会遇到这样的问题:我们需要在构造函数或者在OnLoad事件中进行自己的一些初始化操作,比如连接一个数据库.调用一个资源文件或者后期绑定一个组件.如果代码通过编译,在运行时会执行得相当如你所愿.然而,当我们用窗体设计器打开这样一个窗体或者继承的窗体,IDE环境会抛出非常令人不愉快的异常,比如(NullReferenceException ). 究其原因,主要是窗体设计器在载入窗体时会自动初始化该对象,自动执行诸如构造函数.OnLoad方法和Initiali

第二十二篇:再写Windows驱动,再玩Windbg---NET

2011年到现在,就没再怎么搞过Windows驱动了. 最近, 由于项目需要, 试着改一改一个显卡驱动(KMDOD), 从实践上证明, 我在理论上对一个驱动的架构的正确与否.(USB Display = KMDOD + AVStream). 其中, KMDOD是完成显示的部分功能, 完成其中的VidPN(Video present network), 将驱动中原来的POST物理设备转变为USB物理设备. 而AVStream之所以这样提出, 完成是由于USB Video class的启发, 要不然

JS流程设计器(二)

此代码接着JS流程设计器(一)续写,该代码主要是怎么将设计好的流程图用最基本字符串的方式传到后台,再由后台字符串的方式重新显示在页面上. 1 //转化成后端的方法 2 function changebe(firstbegin){ 3 for(var x=0;x<shapeobjjson.shapeobj.length;x++){ 4 if(shapeobjjson.shapeobj[x].id==firstbegin){ 5 if(firstbegin.indexOf("begin-cir