可扩展应用程序标记语言(XAML)是一种基于XML的声明式语言,用于在各种框架中初始化结构化值和对象。当问题是关于具有特定框架的XAML的使用时,还应该提供框架的标签,例如, [wpf](Windows Presentation Foundation),[silverlight],[windows-phone],[windows-store-apps](Windows 8商店应用),[win-universal-app],[xamarin.forms]或[工作流程 - 基础]
我是WinUI 3的新手,我正在做一个数据网格来显示产品列表,当总宽度不是完整的数据网格宽度而是显示水平时,我想让数据网格列填充数据网格。 .
这个完全相同的代码在一小时前运行得很好。 调整了一些东西,然后 ctrl+Z 回到这个状态 现在每次我在 Android 模拟器上运行它时,当我尝试加载...
DataBinding - 值通过 DataTemplate 不可见
我的 xaml 中有以下 DataTemplate: 我的 xaml 中有以下 DataTemplate: <DataGrid x:Name="ChecklistDataGrid" AutoGenerateColumns="False" HorizontalAlignment="Stretch" Foreground="White" VerticalAlignment="Stretch" Background="Transparent" RowBackground="Transparent" AlternatingRowBackground="Transparent" HorizontalGridLinesBrush="White" VerticalGridLinesBrush="White" CanUserAddRows="False" SelectionUnit="Cell"> <DataGrid.Resources> <!-- Custom Style for DataGridColumnHeader --> <Style TargetType="DataGridColumnHeader"> <Setter Property="Background" Value="Transparent"/> <Setter Property="BorderBrush" Value="Transparent"/> <Setter Property="Foreground" Value="White"/> </Style> <!-- DataTemplate for Buttons --> <DataTemplate x:Key="ButtonTemplate"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Button Content="IO" Background="Green" Click="IOButton_Click" HorizontalAlignment="Stretch" Grid.Column="0"/> <Button Content="NIO" Background="Red" Click="NIOButton_Click" HorizontalAlignment="Stretch" Grid.Column="1"/> <Button Content="NR" Background="DarkGray" Click="NRButton_Click" HorizontalAlignment="Stretch" Grid.Column="2"/> </Grid> </DataTemplate> <!-- DataTemplate for TextBox with NR Button --> <DataTemplate x:Key="TextBoxTemplate"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <TextBox Text="{Binding Pruefwert, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Background="White" HorizontalAlignment="Stretch" Grid.Column="0" Grid.ColumnSpan="2" TextChanged="TextBox_TextChanged"/> <Button Content="NR" Background="DarkGray" Click="NRButton_Click" HorizontalAlignment="Stretch" Grid.Column="2"/> </Grid> </DataTemplate> </DataGrid.Resources> <DataGrid.Columns> <DataGridTextColumn Header="Pruefpunkt" Binding="{Binding Pruefpunkt}" Width="1*"/> <!-- Wrapping Text Column --> <DataGridTemplateColumn Header="Content" Width="10*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Content}" TextWrapping="Wrap" Background="{Binding ContentBackground}"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <!-- Conditional Column for Buttons or TextBox --> <DataGridTemplateColumn Header="Actions" Width="3*"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <ContentControl> <ContentControl.Style> <Style TargetType="ContentControl"> <Style.Triggers> <DataTrigger Binding="{Binding Type}" Value="button"> <Setter Property="ContentTemplate" Value="{StaticResource ButtonTemplate}" /> </DataTrigger> <DataTrigger Binding="{Binding Type}" Value="text"> <Setter Property="ContentTemplate" Value="{StaticResource TextBoxTemplate}" /> </DataTrigger> </Style.Triggers> </Style> </ContentControl.Style> </ContentControl> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> <DataGridTextColumn Header="Pruefpunkt" Binding="{Binding Pruefwert}" Width="1*"/> </DataGrid.Columns> </DataGrid> 我遇到的问题是,Pruefwert 的值在文本框中不可见。对于数据模板文本框模板 我在末尾添加了一个额外的 DataGridTextColumn,具有相同的 DataBinding,这里的值是可见的,没有任何问题。所以数据模板肯定存在一些绑定问题。而且我没有收到任何绑定错误。 为了应用 DataTemplate,首先必须有某个要应用它的对象。对于 ContentTemplate,此对象将是 Content 属性的值。但你这个属性里什么都没有,它被设置为null。 参见示例: <StackPanel> <FrameworkElement.Resources> <DataTemplate x:Key="point.template" DataType="Point"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding X}" Margin="5"/> <TextBlock Text="{Binding Y}" Margin="5"/> </StackPanel> </DataTemplate> </FrameworkElement.Resources> <FrameworkElement.DataContext> <Point X="123" Y="456"/> </FrameworkElement.DataContext> <ContentControl ContentTemplate="{DynamicResource point.template}"/> <ContentControl ContentTemplate="{DynamicResource point.template}" Content="{Binding}"/> </StackPanel>
您好,我正在 .net 8.0 Maui 上实现 skiasharp,并且不断收到 System.NotSupportedException 和 System.Reflection.TargetInvocationException。我试图理解为什么我不断收到...
我有一个 WPF 数据网格,我想要根据值使用不同的单元格颜色。我的 xaml 上有以下代码 样式 TargetType="DataGridCell" 但不是选择一个单元格而是选择...
您好,我正在 .net 8.0 Maui 上实现 skiasharp,并且不断收到 System.NotSupportedException 和 System.Reflection.TargetInitationException。我试图理解为什么我不断收到...
Windows 应用商店应用程序 AppContainerCheck 失败
当我尝试在 Windows 8.1 应用程序上运行应用程序认证测试时,出现以下错误。我环顾了一段时间,似乎找不到任何解决方案。该应用程序是用 C 编写的...
如何同时使用 Trigger IsSelected 和 VisualState MouseOver?如果未选择某个元素并将其悬停,我不想应用样式。 单独的触发器很简单: 如何同时使用 Trigger IsSelected 和 VisualState MouseOver?如果未选择某个元素并将其悬停,我不想应用样式。 单独触发器很简单: <ControlTemplate.Triggers> <Trigger Property="IsSelected" Value="True"> ... </Trigger> </ControlTemplate.Triggers> 仅 VisualStates 也是如此: <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="MouseOver"> <Storyboard> ... </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> 但是我该如何结合这些呢? 您可以在新的 VisualState x:Name="Selected" 中定义 VisualStateGroup x:Name="SelectedStates"。然后,因为每次控件只有来自每组的一个状态,所以 MouseOver 和 Selected 是彼此独立的。请参阅Mitesh Sureja 的博客。 <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="MouseOver"> <Storyboard> ... </Storyboard> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="SelectedStates"> <VisualState x:Name="Selected"> <Storyboard> ... </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> 或者你可以按照克莱门斯的建议去做。请参阅视觉状态管理器与 WPF 中的触发器。 编辑 <Style.Triggers> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsSelected" Value="True" /> <Condition Property="IsMouseOver" Value="True" /> </MultiTrigger.Conditions> <Setter ... /> </MultiTrigger> </Style.Triggers> 刚刚遇到了类似的问题并最终来到这里,因此如果您需要一个适合我的用例的视觉状态解决方案。 根据您想要优先的顺序更改 MouseOver 和 Selected 的顺序。 <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="Normal" /> <VisualState x:Name="MouseOver"> <Storyboard> ... </Storyboard> </VisualState> <VisualState x:Name="Selected"> <Storyboard> ... </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> 问题是它仍然会同时触发鼠标悬停在单独的项目上并选择。
DataGridRowHeader IsPressed 事件不更改背景
我有一个 DataGridRowHeader 的自定义样式,并且 Trigger IsPressed 似乎没有触发。 IsMouseOver 工作正常。我基本上具有与 DataGridColumnHe 触发器相同的样式...
我已经工作了几天,尝试从我拥有的实现中完全创建按钮样式。我一直能完成大部分工作,但无法按照我需要的方式完全配置它......
类型 Universe 无法解析程序集:Uno.UI,版本=255.255.255.255
将 Uno.UI 升级到 3.11.6 后,我在编译项目时收到以下错误: 类型 Universe 无法解析程序集:Uno.UI、Version=255.255.255.255、Culture=neutral、PublicKeyToken=n...
一个 DataTemplate 中的多个 TreeViewItem
我正在努力处理 WinUI 应用程序中的 TreeView,我希望在单个 DataTemplate 中拥有多个 TreeViewItems。 我已经尝试了几件事,但我想我可以做一些像我......
我知道这听起来很简单,但我是 WinUI 3 的新手,我正在学习它。如您所知,关于它的文档和社区并不多,而且很难找到答案。 无论如何,我...
如何控制作为 DataGrid 控件一部分显示在 / 中的水平或垂直滚动条的厚度? 我希望它们显示得比实际情况“更厚”
我正在尝试更改导航视图框架或内容的背景。 我将背景设置为Acrylic,NavigatioView中的Frame与...
使用 FlowDirection 将 .NET MAUI 弹出按钮向右移动?
如何使用 Shell 将 .NET MAUI Flyout 向右移动(例如使用 FlowDirection)? 我目前正在使用 .NET MAUI 开发一个应用程序,并且面临 Flyout 菜单的问题(Sideba...
.Net Maui CollectionView 所选项目未突出显示
我创建了一个类似于数据表的集合视图,除了所选项目突出显示外,一切正常。我尝试使用视觉状态管理器更改颜色,但仍然没有任何效果。我...
为什么 `<StaticResource ResourceKey="{x:Static ... }" />` 在 DataTemplate 中不起作用?
我在 WPF 中遇到了一个奇怪的边缘情况,即允许嵌套元素与属性。我有一个基本的 WPF 应用程序、一个窗口和一个默认的 App.xaml。
无法将本地 html 文件加载到 .NET MAUI WebView 中
我有一个基本网页,我正在尝试将其加载到 XAML 页面上的 WebView 中。相关代码是这样的: 我有一个基本网页,我正在尝试将其加载到 XAML 页面上的 WebView 中。相关代码是这样的: <WebView x:Name="WebViewQuestionText" Source="editor.html" HeightRequest="500" WidthRequest="500" /> 根据官方 Microsoft .NET MAUI 文档,我将 editor.html 位于 /Resources/Raw/editor.html 中,并将其设置为 MauiAsset 的构建操作。 在运行时我不会生成任何错误,但 WebView 是空白的。对 WebView 的检查显示一个网页是准系统,其中没有任何内容,我认为这是 WebView 控件的默认设置。如果我输入实际的 URL,页面就会加载并按预期工作,显示给定网站的内容。 我相信它只是找不到我的页面来显示它。我目前正在为 Windows 构建,但该应用程序最终将部署到 Windows 和 Mac。我怎样才能确保它正确找到它? 正如下面指出的 - 我也尝试过这种方式,得到相同的结果 - 当我单击链接时,我得到一个空白页面。 <WebView x:Name="WebViewQuestionText" HeightRequest="500" WidthRequest="500"> <WebView.Source> <HtmlWebViewSource> <HtmlWebViewSource.Html> <![CDATA[ <html> <head> </head> <body> <h1>.NET MAUI</h1> <p>The CSS and image are loaded from local files!</p> <p><a href="editor.html">next page</a></p> </body> </html> ]]> </HtmlWebViewSource.Html> </HtmlWebViewSource> </WebView.Source> </WebView> 我的editor.html页面如下: <!DOCTYPE html> <HTML> <BODY> <H1>This is a test</H1> <P>This is only a test</P> </BODY> </HTML> 我已经用 this PR 修复了这个问题到 .Net Maui 中。将在未来几周内发布 SR2 版本。 文档表明它在所有平台上都一致工作,但它根本从未在 Windows 上实现过......有点令人担忧。 我在 PR 上发布的解决方法(下面 Reinaldo 也提到过)将同时解决这个问题,但是一旦 SR2 发布并更新到它,您可能应该将其删除。 这最终成为 Windows 平台上针对 .NET MAUI 的当前未解决的错误。 https://github.com/dotnet/maui/issues/5523 似乎有一个解决方法here,但并不理想。该问题似乎是解决 Windows 上本地文件的正确路径问题之一,因此解决方案是直接通过 StreamReader 加载文件 如前所述,目前这是一个未解决的错误。然而,除了使用 StreamReader 之外,还有一种解决方法。 #if WINDOWS private static readonly System.Lazy<bool> _isPackagedAppLazy = new System.Lazy<bool>(() => { try { if (Windows.ApplicationModel.Package.Current != null) return true; } catch { // no-op } return false; }); private static bool IsPackagedApp => _isPackagedAppLazy.Value; // Allow for packaged/unpackaged app support string ApplicationPath => IsPackagedApp ? Windows.ApplicationModel.Package.Current.InstalledLocation.Path : System.AppContext.BaseDirectory; #endif private async void WebView_HandlerChanged(object sender, EventArgs e) { #if WINDOWS await ((sender as WebView).Handler.PlatformView as Microsoft.Maui.Platform.MauiWebView).EnsureCoreWebView2Async(); ((sender as WebView).Handler.PlatformView as Microsoft.Maui.Platform.MauiWebView).CoreWebView2.SetVirtualHostNameToFolderMapping( "localhost", ApplicationPath, Microsoft.Web.WebView2.Core.CoreWebView2HostResourceAccessKind.Allow); var wv = (sender as WebView).Handler.PlatformView as Microsoft.Maui.Platform.MauiWebView; wv.LoadUrl($"https://localhost/{wv.Source.AbsolutePath}"); #endif } WebView 看起来像这样: <WebView x:Name="dashBoardWebView" BackgroundColor="Transparent" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" IsVisible="True" HandlerChanged="WebView_HandlerChanged" Source="test.html"></WebView> 希望有帮助。 注意:取自https://github.com/dotnet/maui/pull/7672 对于那些在 2022 年(SR2 发布之前)看到这篇文章的人(请参阅 Breeno 的回答);这是来自我最近开始使用的一个工作应用程序 - 您可以直接加载本地页面,而必须执行<HtmlWebViewSource>的事情: <WebView x:Name="webViewWiki" Source="/WikiContent/index.html" /> 其中 WikiContent 位于解决方案结构中的 /Resources/Raw 文件夹中,即: HTML 中页面、图像和样式表的相对链接将按预期工作: <html> <head> <title>Test Index</title> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <h1>Index</h1> <h2>Vessel</h2> <ul> <li><a href="bgChartplotterGuide.html">Chart Plotter Guide</a></li> </ul> <h2>Physics</h2> <ul> <li><a href="physics_wind_in_sails.html">Physics: Wind in Sails Chart</a></li> <li><a href="anchoring.html">Anchoring</a></li> <li><a href="depth.html">Depth</a></li> </ul> </body> </html> 顺便说一下: 文档表明它在所有平台上都能一致工作,但它 只是从未在 Windows 上实现过...有点令人担忧。 哈哈,只是一点点!
UWP - DatePicker 和 TimePicker 自定义
我想在同一行(水平)使用 DatePicker 和 TimePicker。我的问题是这些控件太宽了。所以我定制了它们以减少内容,但我无法减少宽度,因为......