/**********************************C++\CX***************************************/
value和ref都是用来定义class的
区别:
value是值类型,也是c++类型,在栈分配空间,效率高,但不支持多态。
ref是引用类型,支持多态,在堆分配空间,效率低,并且带来额外的引用计数开销。
使用:不用多态的话用value,要交给系统管理引用计数的使用ref。
^符号:表示当前数据是引用类型,系统会负责^的变量的引用计数,计数为0时,自动销毁。
Grid^ grid = ref new Grid(); // or: auto grid = ref new Grid();grid->Width = 600;
Platform::Guid:Platform 命名空间中的 128 位非数字值 (GUID)。
Windows::Foundation::DateTime: 日期时间结构。
Windows::Foundation::TimeSpan: TimeSpan的结构。
Platform::Object^: Windows 运行时 类型系统的 C++ 视图中引用计数的基对象。
Platform::String^: Platform::String^ 是用来表示文本的 Unicode 字符的引用计数不可变序列。
Windows::Storage::ApplicationData::Current->RoamingSettings:用于保存应用数据。
例:
auto roamingSettings = Windows::Storage::ApplicationData::Current->RoamingSettings; roamingSettings->Values->Insert("userName", nameInput->Text); if (roamingSettings->Values->HasKey("userName")) { nameInput->Text = roamingSettings->Values->Lookup("userName")->ToString(); }
页面跳转:
if (this->Frame != nullptr)
{
this->Frame->Navigate(TypeName(PhotoPage::typeid));
}
OnNavigatedTo(NavigationEventArgs e)//当用户导航到此页面时执行
打开默认浏览器
auto uri = ref new Windows::Foundation::Uri("https://www.XXXX.com/");
Windows::System::Launcher::LaunchUriAsync(uri);
文件操作:
Windows.Storage命名空间
StorageFolder 操作文件夹及其内容,并提供有关它们的信息。
StorageFolder.CreateFileAsync,这个方法会在当前文件夹中异步的创建一个文件
FolderPicker 允许用户选择文件夹的 UI 元素。其中SuggestedStartLocation为用户选择的初始位置。
PickerLocationId::Downloads 表示下载目录
字符转换:
Platform::String^ PStrTemp;
wstring wstrName(PStrTemp->Data());
PStrTemp = ref new String(wstrName.c_str());
/***********************************XAML**********************************/
布局控件:Canvas、Grid、StackPanel.
Canvas可以任意位置放控件。
Grid类似win8界面的磁贴,承一块一块的对齐摆放。
StackPanel栈一样上下或者左右排列,类似列表。
AppBar:显示导航、命令等。上下都可以存在AppBar,显示关闭都通过右键,如果IsSticky为true,则关闭需要自定义关闭事件。
例:
<Page.BottomAppBar>
<AppBar IsSticky="True" x:Name="m_operAppBar" Padding="10,0,10,0" Background="#7425d0" Closed="OperAppBar_ClosedEvent">
<Grid>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Button x:Name="m_appbarMoveBut" Visibility="Collapsed" BorderThickness="0" Width="77" Height="66" Click="AppBarMoveBut_ClickEvent">
<Image Margin="0,0,0,0" Source="/Assets/MoveBut.png"/>
</Button>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<Button x:Name="m_appbarSelAllBut" BorderThickness="0" Width="77" Height="66" Click="AppbarSelAllBut_ClickEvent">
<Image Margin="0,0,0,0" Source="/Assets/SelectAll.png"/>
</Button>
</StackPanel>
</Grid>
</AppBar>
</Page.BottomAppBar>
Flayouts:弹出画面,一个pop-up窗口,显示在被点击按钮附近,当用户点击或者触摸屏幕的非弹出画面区域时,弹出画面会自动的消失。
App.xaml,MainPage.xaml
代表应用对象和 UI 默认页面的 XAML 标记文件。你可以使用 Visual Studio 设计器、Microsoft Expression Blend 或其他 XAML 设计器工具修改这些文件。大部分修改内容都位于 MainPage.xaml 中。
App.xaml.h,App.xaml.cpp
MainPage.xaml.h,MainPage.xaml.cpp
Application 和 MainPage 类的用户可编辑标头和实现代码隐藏文件。这些类分别对应于 App.xaml 和 MainPage.xaml 中的 XAML 树。MainPage.xaml.h 和 MainPage.xaml.cpp 文件是添加与本页相关的事件处理程序和其他自定义程序逻辑的位置。App 类中的成员变量的作用域为整个应用。Page 类中的变量的作用域仅为该页面。App.xaml 没有可视的设计平面,但你仍可以在设计器中使用文档大纲和属性检查器。
Package.appxmanifest
包含描述应用的元数据,例如,显示名称、描述、徽标和功能。单击此项时,它将在“清单设计器”中打开。
*.png
(位于 Assets 文件夹。)默认徽标和初始屏幕图像,你可以将其替换为自己的图像。
pch.h,pch.cpp
典型的 C++ 预编译头文件。可以根据需要向 pch.h 文件中添加 #include 指令。
数据绑定模式
OneTime:一次绑定,绑定创建时使用源数据更新控件。(可以是普通的set、get属性)。
OneWay (默认值):单向绑定,在绑定创建时使用源数据更新控件,当源数据发生变化的时候也更新控件。(必须实现INotifyPropertyChanged接口或者继承自DependencyObject)。相当于Eval
TwoWay:双向绑定,数据源的变化会更新控件,控件的变化也会更新到数据源。相当于Bind吧(呵呵我做东西是没怎么用到这个)
注册事件:
+= ref new EventHandler<Platform::Object^>(this,&MusicPlayPage::MediaControl_PlayPressed);
实现后台播放的条件:
1.清单文件中,加入后台任务声明(入口点是工程名.App)
2.MediaElement的属性 AudioCategory="BackgroundCapableMedia"
3.注册MediaControl的控制事件(4个必须注册)
各控件事件:
MediaElement:
BufferingProgressChanged()//缓冲进程改变
CurrentStateChanged()//
DoubleTapped()//
downloadProgressChanged()//下载进程改变
Dragenter() //拖拽确定
DragLeave() //拖拽离开
DragOver() //拖拽结束
Drop() //拖拽
GotFocus() //获得焦点
Holding() //拖住
KeyDown() //
KeyUp() //
LayoutUpdated()//布局更新
Loaded() //
LostFocus() //失去焦点
Manipulationcompleted()//操作完成
Manipulationdelta()//
ManipulationStarted()//操作开始
ManipulationStarting()//
MarkerReached()//
MediaEnded()//播放结束
MediaFailed()//播放失败
MediaOpened()//播放开始
PointerCanceled()//
PointerCaptureLost()//
PointerEntered()//
PointerExited()
PointerMoved()
PointerPressed()
PointerReleased()
PointerWheelChanged()
RateChanged() //速率改变
RightTapped()
SeekCompleted()//
SizeChanged()
Tapped()
Unloaded() //未读取
VolumeChanged()//音量改变