我正在寻找一些关于如何在WinRT中创建自定义控件的教程,我有一个问题.
假设我想创建一个包含一些东西的简单控件,比如左边是图像的Grid,右边是几个TextBlocks.
我的意思是,简单的事情:
<Grid Height="100">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="0.7*"/>
</Grid.ColumnDefinitions>
<Image Source"/Assets/someRandomImage.png"/>
<StackPanel Grid.Column="1"
VerticalAlignment="Center">
<TextBlock Text="Some text"
Margin="10,0,10,0"
FontSize="24"
FontWeight="SemiLight"
TextTrimming="CharacterEllipsis"/>
<TextBlock Text="Some random description..."
Margin="10,5,10,0"
FontSize="18"
FontWeight="Light"
Foreground="Gray"
TextWrapping="Wrap"
TextTrimming="CharacterEllipsis"/>
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我会用这个内容创建一个UserControl,所以当我正在处理它的UI时,我将能够在XAML Designer中看到它,并且我将在UserControl代码中添加所有Properties和DependencyProperties.
然后我看到另一种方法是使用Template控件,所以我必须创建一个继承自Control类的类,然后使用上面的XAML代码作为模板并将其应用于自定义控件并添加所有其余的逻辑在那里.
当然,我还必须将x:Name属性添加到控件中的一些UIElements以便能够与它们进行交互,但是你明白了.
我想知道,使用这两种方法中的任何一种方法都可以,或者更好地使用一种方法,为什么呢?此外,我喜欢使用UserControls,因为我可以在Designer窗口中看到它们,而我无法使用模板执行此操作,我必须运行应用程序并创建控件的实例以查看它是什么实际上看起来像.
感谢您的帮助,我想我不是唯一一个有这种疑问的人,所以我希望这个问题能够帮助其他人:D
塞尔吉奥
我正在为Windows 10开发通用Windows应用程序,我发现的第一件事是在设置图像样式时不支持Trigger元素(XAML).这是我试图实现的代码:
对不起,我不得不在这里使用图片,我从我的VM获取它.
现在在通用Windows应用程序中如何实现这种类型的触发器?
我已经了解到,如果将网格行的高度ScrollViewer
设置为Auto
,则垂直滚动条将不会生效,因为它的实际大小ScrollViewer
可能大于视线中的高度.因此,为了使滚动条工作,我应该将高度设置为固定数字或星形高度
但是,我现在有了这个要求,我有两个不同的视图驻留在两个网格行中,并且我有一个切换按钮可以在这两个视图之间切换:当显示一个视图时,另一个视图隐藏/消失.所以我定义了两行,两个高度都设置为Auto
.我绑定的每一行中的布尔属性视图的可视性从我的视图模型(一个是从转换True
到Visible
从和其他True
来Collapsed
.我们的想法是,当一个视图的能见度Collapsed
,网格行的高度/视图将被改变自动为0.
视图显示/隐藏工作正常.但是,在一个视图中我有一个ScrollViewer
,正如我所提到的,当行高设置为时,它不起作用Auto
.任何人都能告诉我如何在仍然ScrollViewer
自动工作的同时满足这样的要求吗?我想我可以在代码隐藏中设置高度.但由于我使用的是MVVM,因此需要额外的通信/通知.有没有更简单的方法呢?
我需要删除内容中的下划线HyperLinkButton
.
TextDecorations
在此XAML元素中不存在.
<HyperlinkButton x:Name="BtnTeste"
Width="100" Height="50" BorderThickness="1"
HorizontalAlignment="Center"
Foreground="Black" Background="#ffffff"
NavigateUri="www.google.com"
Content="Execute" />
Run Code Online (Sandbox Code Playgroud) 我必须在UWP中做一个硕士/细节
1-如果你在笔记本电脑:
显示该人的数据的负责的GridView出现.因此,当您选择一个项目绑定到ViewModel时.
<ScrollViewer x:Name="ScrollLista" Grid.Column="0" Grid.Row="1">
<ListView x:Name="Lista" ItemsSource="{Binding Lista}" ItemClick="Lista_ItemClick" SelectedItem="{Binding PersonaSeleccionada, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding nombre}" />
<TextBlock Text="{Binding apellido}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ScrollViewer>
<Grid x:Name="CRUD" Grid.Column="1" Grid.Row="1" DataContext="{Binding PersonaSeleccionada}" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
...
</Grid>
Run Code Online (Sandbox Code Playgroud)
2-什么时候是手机:
只会出现列表,当我选择一个项目时,这应该是两件事.
问题:ItemClick不工作,不调用Lista_ItemClick ...如何调用方法并将选中的项目发送给代码?
在开发通用Windows应用程序(uwp)时,我经常需要查找如何在XAML中执行不同的操作.
一个问题是,我经常会得到一个不适用于UWP应用程序的WPF或Silverlight或Windows Phone解决方案.各种方言之间是否存在差异?
如果没有,这可能是即将发布的stackoverflow文档功能的一部分.我非常愿意参与我已经意识到的事情.
我正在创建一个针对Windows的Anniversary Build的新UWP Blank App项目.这是我唯一页面的标记(默认模板名为MainPage.xaml):
<Page
x:Class="App1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App1"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.Resources>
<DataTemplate x:Key="MyDataTemplate" x:DataType="local:BindyThing">
</DataTemplate>
</Grid.Resources>
</Grid>
Run Code Online (Sandbox Code Playgroud)
BindyThing类在CS文件中声明如下:
namespace App1
{
public class BindyThing
{
}
}
Run Code Online (Sandbox Code Playgroud)
正如您从上面的标记中看到的,我正在尝试创建一个DataTemplate来呈现BindyThing.但是,当我编译时,我收到以下错误:
The XAML Binary Format (XBF) generator reported syntax error '0x09C4' : Property Not Found
当我注释掉DataTemplate的声明时,此错误消失.有没有人知道为什么我得到这个?所有帮助赞赏.谢谢!
如何在按钮中显示图像/图标和文字?
<StackPanel Name="stackPanel" Orientation="Horizontal" Tapped="stackPanel_Tapped">
<Button x:Name="button" FontFamily="Segoe MDL2 Assets" Content="" Width="50" Height="50" Background="Transparent" />
<TextBlock Text="Grades" FontSize="18" VerticalAlignment="Center" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
我可以在stackpanel中添加一个taplistener,但这不会使stackpanel像真正的按钮一样具有视觉效果.
我也尝试过:
<Button FontFamily="Segoe MDL2 Assets" Width="50" Height="50" x:Name="button" Content="test">
<Image x:Name="button" Source="Assets/test.png" />
</Button>
Run Code Online (Sandbox Code Playgroud)
但我不能两次设置内容.我想要一个按钮中的文本和图标,所以当用户点击它时,它将具有像按钮一样的视觉效果.这可能吗?或者其他人有其他方法来实现这一目标吗?
谢谢阅读.
我有一个UWP项目,当我尝试为ARM构建它时,它构建得很好,但是,当我为x86或x64构建它时,我收到'一个项目不能有多个 ApplicationXaml 项目'。我尝试清理解决方案并再次重建,但错误无法消失。我也尝试过更改构建操作并再次重建,但到目前为止没有运气。任何想法?我正在使用 Visual Studio Enterprise 2017。
我搜索并搜索过,似乎在这里碰了一堵砖墙.我正在开发一个生成音频指纹的应用程序,以自动搜索音频数据库以获取正确的艺术家和标题,并相应地重命名文件.
我的问题是,没有支持的C#和UWP库(据我所知)可以生成声学指纹.我发现的唯一的东西是Chromaprint,它允许我运行命令,如"fpcalc.exe mymp3file.mp3> generatedfingerprint.txt",并将指纹抓取到文本文件中.
因此,当您看到抓取指纹并不是真正的问题时,问题是我无法使用传统方法(例如Winforms应用程序中使用的那些)从UWP应用程序中运行EXE文件.我也无法启动命令提示符从UWP执行文件,因此我无法从我的应用程序中生成指纹.
所以我的问题是,有没有人有任何解决方法.我知道我可以使用Powershell,因为XboxOne支持PowerShell,但是如果我使用以下代码:
using (PowerShell PowerShellInstance = PowerShell.Create())
{
PowerShellInstance.AddCommand(".\fpcalc.exe " + file.Path + " > out.txt");
}
Run Code Online (Sandbox Code Playgroud)
构建时出现以下错误:
Cannot find type System.SystemException in module CommonLanguageRuntimeLibrary
Run Code Online (Sandbox Code Playgroud)
那么有谁知道我可以做什么来从我的应用程序中启动此fpcalc.exe文件?我真的不介意应用程序是否只支持Windows PC和桌面,但最终的应用程序必须能够通过WACK并允许在Microsoft Store上(可以免费下载BTW).
在此先感谢任何帮助:)
uwp-xaml ×10
uwp ×6
xaml ×6
c# ×4
wpf ×2
autosize ×1
code-behind ×1
imagebutton ×1
powershell ×1
scrollviewer ×1
silverlight ×1
wack ×1
windows ×1