本文主要写我开发遇到常(zhi)见(zhang)问题。
真的有那么多问题?其实我就想记 ListViewItem 的问题,我自己都不记得在什么时候写如何设置他不压缩。
设置 ListView 列表项宽度
默认 ListViewItem 是宽度压缩,在 ListView 添加代码
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
更多关于 ListView 请看 win10 UWP ListView
如果需要设置 WPF 的 ListView 宽度,可以使用HorizontalContentAlignment="Stretch"
UWP 设置文本使用文字图标
在 UWP 很经常看到这样的图标
这就是 Segoe MDL2 icons ,可以使用下面不同的方式在 xaml 使用
SymbolIcon
可以使用的 SymbolIcon 直接给名字,相对可读性比较好
<SymbolIcon Symbol="GlobalNavigationButton"/>
FontIcon
<FontIcon FontFamily="Segoe MDL2 Assets" Glyph=""/>
TextBlock
使用 TextBlock 和 FontIcon 差不多
<TextBlock FontFamily="Segoe MDL2 Assets" Text=""/>
参见:Segoe MDL2 icon guidelines - UWP app developer
设置 TargetType 样式
编译时 VisualStudio 告诉 Style object must specify a String value for the TargetType property
就是存在样式没有设置 TargetType ,在UWP所有的样式都需要添加 TargetType 才可以使用。
Error WMC0080: Style object must specify a String value for the TargetType property (107, 10)
原来的代码
<Style x:Key="KguypnDitzbbi">
<Setter Property="FontFamily" Value="Segoe MDL2 Assets" />
<Setter Property="Width" Value="38"></Setter>
</Style>
修改后的代码
<Style x:Key="KguypnDitzbbi" TargetType="TextBlock">
<Setter Property="FontFamily" Value="Segoe MDL2 Assets" />
<Setter Property="Width" Value="38"></Setter>
</Style>
C# AddRange 添加位置
AddRange 添加的是在列表的最后。一开始我以为是最前。
List 添加重复项
有时候需要写一个测试,添加1000个相同项,难道使用 For ?
实际有简单方法
List<string> Items = Enumerable.Repeat("lindexi 需要重复文字", n/*多少个*/).ToList();
上面不仅是文字,因为使用List<string>
,实际使用什么,就添加什么。
Distinct linq 匿名类去重
http://www.aneasystone.com/archives/2015/04/distinct-in-csharp-linq.html
绑定 DataContext 的所有方法
如果觉得ms需要做一些功能,或想去说垃圾ms,请到Welcome to the Windows developer feedback site!
UWP中获取Encoding.Default
Encoding.GetEncoding(0);
参见:UWP中获取Encoding.Default - yinyue200 - 博客园
UWP 使用 GBK 读取文本
判断 ctrl 按下
判断 ctrl 按下,可以使用:
(Window.Current.CoreWindow.GetKeyState(VirtualKey.Control) & CoreVirtualKeyStates.Down) != 0
判断其它的如 shift 使用方法也一样。
UWP 获取软件版本
UWP 获取自己软件的版本可以和服务器比较,判断当前是否需要升级,那么可以使用下面的代码获得 UWP 应用的版本
Windows.ApplicationModel.Package.Current.Id.Version
UWP 应用获取各类系统、用户信息 (1) - 设备和系统的基本信息、应用包信息、用户数据账户信息和用户账户信息
获取窗口大小
获取主窗口可视大小
Windows.UI.ViewManagement.ApplicationView.GetForCurrentView().VisibleBounds
当前窗口的大小
Window.Current.Bounds
获取当前窗口的其他方法
Window.Current.CoreWindow.Bounds
上面的方法可以获得窗口的 x 和 y 大小
ContentDialog 透明背景
张高兴的 UWP 开发笔记:定制 ContentDialog 样式 - 张高兴 - 博客园
bind 的默认 mode
{x:Bind}
的默认 Mode 是 OneTime。{Binding}
的默认 mode 是 OneWay.
协变 逆变
协变 out ,如:string->object (子类到父类的转换) 逆变 in ,如:object->string (父类到子类的转换)
https://haojima.net/Home/Blog/53
需要遵守的条约
你真的知道C#的TryParse吗?
有趣故事
开发中,会遇到一些有趣的故事。
有一天vs告诉我,你写的代码,连标点符号我也不信。
我是世界上少见的不需要写单元测试的程序员,因为我写的代码都是bug。
下面,我来告诉你一些有趣的故事:
有趣的“烫烫烫烫”和“屯屯屯屯” - imjustice - 博客园
工具
介绍一下好用的工具
HappyStudio.UwpToolsLibrary.Auxiliarys 1.0.3 UWP工具库的辅助类库
HappyStudio.UwpToolsLibrary.Information 1.0.2 UWP 工具库的信息类库
HappyStudio.UwpToolsLibrary.Control 1.1.0 UWP 工具类库的控件库
HappyStudio.UwpToolsLibrary 1.0.4 给UWP工具类库的其他模块使用的依赖类库
本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/UWP-%E5%BC%80%E5%8F%91%E4%B8%AD-%E9%9C%80%E8%A6%81%E7%9F%A5%E9%81%93%E7%9A%841000%E4%B8%AA%E9%97%AE%E9%A2%98.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。