[UWP小白日记-8]一些零碎的东西

简介: 原文:[UWP小白日记-8]一些零碎的东西设置启动窗口大小 直接上代码了没什么好解释的了,既然能设置最小,那铁定就能设置最大 public MainPage() { //设定窗口启动显示大小 ApplicationView.
原文: [UWP小白日记-8]一些零碎的东西

设置启动窗口大小

直接上代码了没什么好解释的了,既然能设置最小,那铁定就能设置最大

 public MainPage()
 {
    //设定窗口启动显示大小
    ApplicationView.PreferredLaunchViewSize = new Size(800, 600);
    ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
    
    this.InitializeComponent();
    
}

截取双精度浮点数的整数部分,而不会自动进位。


double d = 1.88415;
Math.Truncate(d)

//结果为 1 ,而不会是2。

自定义PivotHeader

天撸真是折腾,对于萌新来说,UWP控件的XAML样式啊、状态啊,动画啊,简直是噩梦。那么长的XAML看得头晕眼花+_+

<Pivot.HeaderTemplate>
                <DataTemplate x:Name="NavigationBar">
                    <Grid Width="{Binding Width}"
                          Margin="0"
                          Padding="0"
                          HorizontalAlignment="Center">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <TextBlock Text="{Binding Text}"
                                   FontSize="15"
                                   HorizontalAlignment="Center"/>
                        <SymbolIcon x:Name="triangleSymbolIcon"
                                    Symbol="Play" 
                                    Grid.Row="1"
                                    Margin="0"
                                    Opacity="0"
                                    HorizontalAlignment="Center"
                                    RenderTransformOrigin="0.5,0.5">
                            <SymbolIcon.RenderTransform>
                                <CompositeTransform x:Name="SymbolIconCompositeTransform" 
                                                    Rotation="-90"/>
                            </SymbolIcon.RenderTransform>
                            </SymbolIcon>
                    </Grid>
                </DataTemplate>
</Pivot.HeaderTemplate>
double Widths = ApplicationView.GetForCurrentView().VisibleBounds.Width / 3; //应为我这只有3个头所以用获取的屏幕实际宽度除以3来设置每个头的宽度
pivot.DataContext=new {Text="xxx",Width=Widths}; //结果不显示

本来想设置pivot.DataContext的,结果不显示,只能如下使用了

pivotItem.Header=new {Text="xxx",Width=Widths}; //关于new{}这是个匿名实例

这下能正常显示了,但是不管在模拟器还是真机上都有显示问题、
还得改下pivotHeaderItem这个样式,把其中的margin 和padding都改为0就正常了。

在扒Pivot的时候发现个好玩的东西 每个pivotitem中的子控件依次滑动进入item

同组的控件会同时滑入,不同组的会依次滑入

<TextBlock Pivot.SlideInAnimationGroup="1"/>

UWP中设置手机端的状态栏

一定要记住要添加 windows mobile for UWP这个包,不然无法获取到状态栏
如果你是mobile 和PC都适配那么你得家平台判断。否则会异常

//PC需要判断一下平台
            if (Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile")
            {
                #region 显示顶部通知栏
                if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.ViewManagement.StatusBar"))
                {
                    StatusBar statusBar = StatusBar.GetForCurrentView();
                    statusBar.BackgroundColor = Colors.CadetBlue; // 背景色
                    statusBar.ForegroundColor = Colors.White; // 前景色
                    statusBar.BackgroundOpacity = 1; // 透明度
                }
                #endregion
            }
            else
            {
                
                
                this.InitializeComponent();
            }
全屏模式
ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); 
退出全屏
ApplicationView.GetForCurrentView().ExitFullScreenMode();

FontIcon在C#后台代码注意

在后台代码里要注意\uE154这种图标,如果你的图标字符代码大于4位的话会被截断,如下图:
img_7dbeb2fc0bd9e7f25eae1bc434a6de89.png
img_a2a67584e8d6309bbc56a229bef47e4d.png
\u这种写法只能取到4位,超过就直接当字符串读取了。
那要怎么使用呢?

\U0001F575

没错就是改成大写的U,然后加3个0。
img_c1ddda603ab828683d07c9063b2cfbd3.png
img_a9988c3f4c40a102ee610fd276075dcf.png

如何精确定位ScrollViewer中控件的位置

在这里非常感谢MSDN版主shao.meng的帮助。

  var d = test2.TransformToVisual(scrollViewer.Content as UIElement);
  var p = d.TransformPoint(new Point(0, 0));
  scrollViewer.ChangeView(p.X, null, null);

test2:是要定位的控件。
scrollViewer:就是ScrollViewer控件。
new Point(0,0)要定位控件的哪个点,这里的场景是来定位在scrollViewer中的水平位置,那么只要获取x的值就OK了
https://msdn.microsoft.com/zh-cn/library/dn252763.aspx
巨硬已经为我们实现了滚动动画了,默认是开启的。第四个参数就是设置动画是否开启的。

UWP中怎么获取匿名实例中的值

下面是我一个在写的记账APP的弹出菜单,应为菜单不会再动了所以写死。

起名字简直崩溃%>_<%;

 new[]  {
                     new { Text="密码",Width=Widths,Glyph="\uE1F7",IconFontFamily=new FontFamily("Segoe MDL2 Assets"),TextFontFamily=new FontFamily("楷体")},
                     new { Text="夜间模式",Width=Widths,Glyph="\uE82F",IconFontFamily=new FontFamily("Segoe MDL2 Assets"),TextFontFamily=new FontFamily("楷体")},
                     new { Text="备份",Width=Widths,Glyph="\uE753",IconFontFamily=new FontFamily("Segoe MDL2 Assets"),TextFontFamily=new FontFamily("楷体")},
                     new { Text="设置",Width=Widths,Glyph="\uE115",IconFontFamily=new FontFamily("Segoe MDL2 Assets"),TextFontFamily=new FontFamily("楷体")}
                    };

这个东西是绑定到一个listbox上的,在GetProperty()方法中填入上面定义的各个属性的名称即可。
如下代码放在listbox的SelectionChanged事件中

var tempItem = (sender as ListBox).SelectedValue;
var temp= tempItem.GetType().GetProperty("Text").GetValue(tempItem, null);

怎么在XAML中定义元素的访问级别?

大家在码字中肯定发现,在一个page中定义了一个控件,但是在另外一个page就访问不了,提示有一定的访问级别,一说这东西都知道是私有的。
那我们怎么办呢?
大家可能码字时没注意,控件都有这个

x:FieldModifier="internal"

这玩意就是改元素的访问级别的。
当然还有可以使用

new MainPage().FindName(name) as XXX

怎么让一些控件随着ScrollViewer的滚动显示和隐藏呢?

我看到好多APP中都有这个实现,当时就想这是怎么实现的呢,最开始难住我的是我在后台CS中怎么知道和设置前台UI的显示和隐藏呢。就想XMAL是视觉树的样子,那么我就拿到他它的视觉树就好了。

撸了半天找到这个

VisualStateManager
它里面有个GotoState();通过它就能很好的控制其他UI元素的显示和隐藏了

他就是用来管理视觉树状态的,既然我要通过ScrollViewer的滚动来隐藏和显示其他的UI元素。
在ScrollViewer_ViewChanged事件中判断好偏移的方向和偏移是不是大于某个值就OK了。

目录
相关文章
|
3月前
|
图形学
Unity精华☀️点乘、叉乘终极教程:用《小小梦魇》讲解这个面试题~
Unity精华☀️点乘、叉乘终极教程:用《小小梦魇》讲解这个面试题~
|
6月前
|
编解码 数据可视化 小程序
微信小游戏开发(第一篇
微信小游戏开发(第一篇
281 0
确实挺不错的
确实挺不错的
86 0
|
缓存 Java 数据库连接
Myabtis源码如何阅读,教你一招!!!
Myabtis源码如何阅读,教你一招!!!
|
程序员 Go 网络安全
随笔第二周
且视他人之疑目如盏盏鬼火, 大胆去走你的夜路。 ——史铁生《病隙碎笔》
102 0
|
架构师 搜索推荐 Java
用语雀写文章了,功能真心强大!
用语雀写文章了,功能真心强大!
376 0
用语雀写文章了,功能真心强大!
|
XML 前端开发 程序员
【Android开发】小白入门必看的”四框“使用教程,你学废了嘛?
【Android开发】小白入门必看的”四框“使用教程,你学废了嘛?
192 0
【Android开发】小白入门必看的”四框“使用教程,你学废了嘛?
|
JSON 数据安全/隐私保护 数据格式
csdn竟然还有这种神器!后悔没有早点知道!超好用的csdn插件,别再犹豫了,赶快入手吧!
csdn竟然还有这种神器!后悔没有早点知道!超好用的csdn插件,别再犹豫了,赶快入手吧!
257 0
csdn竟然还有这种神器!后悔没有早点知道!超好用的csdn插件,别再犹豫了,赶快入手吧!
阅读札记
我在 GitHub 上创建了一个关于 Reading 的 repo, 里面可以分享一些关于论文的阅读经验或者是一些精彩论文介绍亦或是精品博客之类的. 欢迎大家在此仓库提交一些新的, 优秀的资源! Github 地址是: https://q735613050.
1298 0
|
前端开发
[UWP小白日记-3]记账项目-1
原文:[UWP小白日记-3]记账项目-1   学了一段时间的UWP,来个项目试试手。   本来是想边做边学MVVMLight的结果感觉MVVM对于萌新来说太高难,以后再把这个项目改造成MVVMLight框架的项目。
1445 0