xaml 相关问题

可扩展应用程序标记语言(XAML)是一种基于XML的声明式语言,用于在各种框架中初始化结构化值和对象。当问题是关于具有特定框架的XAML的使用时,还应该提供框架的标签,例如, [wpf](Windows Presentation Foundation),[silverlight],[windows-phone],[windows-store-apps](Windows 8商店应用),[win-universal-app],[xamarin.forms]或[工作流程 - 基础]

在.net MAUI中,小屏幕用哪个控件选择数字?

我正在使用.Net MAUI 构建手表应用程序(Wear os 和 IOS):小屏幕。 我希望用户选择 0 到 60 之间的数字。 我尝试过选择器,但小屏幕上的布局很糟糕......

回答 1 投票 0

我们如何知道 UWP 滑块在值更改之前何时开始移动?

概述 我有一个使用 UWP 技术的项目,我在其中使用滑块控件来收集有关滑块移动的信息,我使用了 ManipulationStarting(用于移动的开始)和 Manipulation...

回答 1 投票 0

无法在MAUI应用程序中将图像数据保存到SQLite数据库

问题概述 你正在尝试做什么: 当选择图像文件后按下“保存”按钮时,我试图将图像二进制数据保存到名为 gazouByte.db3 的 SQLite 数据库中

回答 1 投票 0

PowerShell WPF UI 检测组合键

我正在编写一个在 WinPE 中运行的 UI。到目前为止,我已经一切正常,并且正在努力使用户无法关闭窗口。我已将其设置为全屏并禁用了关闭 (X) 按钮,但是

回答 3 投票 0

DataGrid - 立即提交编辑

我有一个 CheckBoxColumn,另一个元素的可见性已绑定到。但是,在用户更改行之前,不会提交对 dataviewmodel 中属性的编辑。有没有办法...

回答 1 投票 0

所有对象属性中的OnPropertyChanged

我正在使用 MVVM,我有一个具有许多属性的 ClientClass 对象(~50)。因此,在我看来,我有一个绑定到 Client.ClientType 属性的选取器,以及绑定到图像的相同属性

回答 1 投票 0

关闭托管页面的 WPF 窗口

我目前正在学习 C# WPF。现在我只是想了解导航是如何工作的。 我创建了一个包含 2 个按钮的测试应用程序。一个导航到下一页,另一个用于打开新页面

回答 4 投票 0

如何在整个用户控件内而不是仅在内部元素上捕获 PointerPressed 事件? Windows 应用程序

我有一个用户控件,我希望捕获其上的 PointerPressed 事件。 只需捕获用户控件本身的事件,如下所示: 我有一个用户控件,我希望捕获其上的 PointerPressed 事件。 只需捕获用户控件本身的事件,如下所示: <UserControl ... PointerPressed="UserControl_PointerPressed" > 仅在鼠标单击控件内的元素时调用事件。 该控件由边框勾勒出轮廓,我希望在内部单击时调用该事件,但在边框内的大部分空白区域上,该事件不会发生。 有办法做到这一点吗? 将相关边框的背景设置为透明就可以了

回答 1 投票 0


将WPF控件的ControlTemplate更改为不被禁用

我有一个 Devexpress DateEdit 并添加了一个触发器,当 IsEnabled=False 时将 ControlTemplate 更改为标签。这一切都很好,但我的问题是,标签的文本仍然是 Gr...

回答 1 投票 0

在 UWP 中的框架旁边放置网格

我正在编写一个 UWP 应用程序。我想在框架旁边放置一个网格。 这是 MainPage.XAML: 我正在编写一个 UWP 应用程序。我想在框架旁边放置一个网格。 这是 MainPage.XAML: <Page x:Class="Project_NewSpartan.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Project_NewSpartan" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid> <!-- Define rows for the layout --> <Grid.RowDefinitions> <!-- First row for the AppTitleBar --> <RowDefinition Height="Auto"/> <!-- Second row for the NavigationFrame --> <RowDefinition Height="Auto"/> <!-- Second row for the Frame content --> <RowDefinition Height="*"/> </Grid.RowDefinitions> <!-- AppTitleBar placed in the first row --> <Frame x:Name="TitlebarFrame" Grid.Row="0"/> <!-- NavigationRailFrame placed in the second row --> <Frame x:Name="NavigationFrame" Grid.Row="1"/> <!-- Main content placed in the third row --> <Frame x:Name="MainFrame" Grid.Row="2" HorizontalAlignment="Stretch"/> <Grid Grid.Row="2" MaxWidth="200" HorizontalAlignment="Right" Background="Red"></Grid> </Grid> </Page> 所以,我想要的是这样的: |标题栏框架| |导航框架| |WebView |网格 | 所以我希望 webview 在网格采用 200 宽度后自动占用可用空间。我怎样才能做到这一点? 请帮助我:,( Gerry Schmitz 找到了答案:将 MinWidth 设置为 200

回答 1 投票 0

ContentDialog 内元素的绑定状态有问题

我目前正在尝试恢复别人的项目。 在原始项目中,有一个使用 ContentDialog 的“MainMenu”页面。 我已在该菜单中添加了一个复选框并尝试过

回答 1 投票 0

WinUI3 异步绑定转换器

我有一个 API,它返回一组模型,每个模型都有一个缩略图 ID,需要通过经过身份验证的 API 调用获取该缩略图 ID,并显示在网格中每个项目的数据模板中的图像元素中

回答 1 投票 0

jalali 日期选择器 Material Design WPF C#

我有一个WPF应用程序.net Framework平台,在Xaml端,我更改了文化,如下所示:当我使用DatePicker时,当我单击日期选择按钮时,它会显示波斯语

回答 1 投票 0

以编程方式检索样式中 Setters 设置的 DependencyProperty

正在开发 WinUI3 应用程序。 我在 XMAL 中定义了一种样式,以在以编程方式创建控件时使用 <p>正在开发 WinUI3 应用程序。 我在 XMAL 中定义了一种样式,以在以编程方式创建控件时使用</p> <pre><code> &lt;Canvas.Resources&gt; &lt;Style TargetType=&#34;Button&#34; x:Key=&#34;NodeStyle&#34;&gt; &lt;Setter Property = &#34;Height&#34; Value=&#34;90&#34;/&gt; &lt;Setter Property = &#34;Width&#34; Value=&#34;180&#34;/&gt; &lt;Setter Property = &#34;CornerRadius&#34; Value=&#34;100&#34;/&gt; &lt;Setter Property = &#34;Background&#34; Value=&#34;Black&#34;/&gt; &lt;/Style&gt; &lt;/Canvas.Resources&gt; </code></pre> <p>稍后资源被使用</p> <pre><code>Button button = new() { Content = node.Key, Style = this.visualizationCanvas.Resources[&#34;NodeStyle&#34;] as Style, ClickMode = ClickMode.Release }; </code></pre> <p>而且它有效。但是,我无法以受控方式访问样式内、代码内的设置器设置的属性值。 我阅读了以下文件</p> <p><a href="https://learn.microsoft.com/en-us/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.setter.target?view=windows-app-sdk-1.5" rel="nofollow noreferrer">https://learn.microsoft.com/en-us/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.setter.target?view=windows-app-sdk-1.5</a></p> <p><a href="https://learn.microsoft.com/en-us/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.dependencyproperty?view=windows-app-sdk-1.5" rel="nofollow noreferrer">https://learn.microsoft.com/en-us/windows/windows-app-sdk/api/winrt/microsoft.ui.xaml.dependencyproperty?view=windows-app-sdk-1.5</a></p> <p><a href="https://learn.microsoft.com/en-us/windows/uwp/xaml-platform/dependency-properties-overview" rel="nofollow noreferrer">https://learn.microsoft.com/en-us/windows/uwp/xaml-platform/dependency-properties-overview</a></p> <p>我了解到这应该是可能的</p> <blockquote> <p>如果您使用代码访问 Setter 实例,并且父 Style 上的 IsSealed 属性值为 true,则无法更改 Setter 实例的任何属性的值。</p> </blockquote> <p>尝试过:</p> <pre><code>Style s = this.visualizationCanvas.Resources[&#34;NodeStyle&#34;] as Style; _log.Info(s.TargetType.FullName); ================= output: Microsoft.UI.Xaml.Controls.Button </code></pre> <p>然后:</p> <pre><code>foreach (Setter setter in s.Setters) { setter.Property.GetMetadata(typeof(Button)).DefaultValue; //NaN setter.Value; // gives me the values, but I don&#39;t know which property the value belongs to setter.GetValue(Button.HeightProperty); // System.Runtime.InteropServices.COMException (0x8000FFFF) setter.GetValue(setter.Property); // System.Runtime.InteropServices.COMException (0x8000FFFF) } </code></pre> </question> <answer tick="false" vote="0"> <p>您可以像这样获取每个 setter 的属性值:</p> <pre><code>&lt;Page.Resources&gt; &lt;Style x:Key=&#34;NodeStyle&#34; TargetType=&#34;Button&#34;&gt; &lt;Setter Property=&#34;Height&#34; Value=&#34;90&#34; /&gt; &lt;Setter Property=&#34;Width&#34; Value=&#34;180&#34; /&gt; &lt;Setter Property=&#34;CornerRadius&#34; Value=&#34;100&#34; /&gt; &lt;Setter Property=&#34;Background&#34; Value=&#34;Black&#34; /&gt; &lt;/Style&gt; &lt;/Page.Resources&gt; </code></pre> <pre><code>if (Resources.TryGetValue(&#34;NodeStyle&#34;, out var resource) is not true || resource is not Style nodeStyle) { return; } var styledButton = new Button { Style = nodeStyle }; foreach (Setter setter in nodeStyle.Setters.Cast&lt;Setter&gt;()) { var value = styledButton.GetValue(setter.Property); System.Diagnostics.Debug.WriteLine($&#34;Value: {value}&#34;); } </code></pre> <p><strong>输出</strong></p> <pre><code>Value: 90 Value: 180 Value: 100,100,100,100 Value: Microsoft.UI.Xaml.Media.SolidColorBrush </code></pre> </answer> </body></html>

回答 0 投票 0

如何删除MenuItem.Icon左侧和顶部的填充?

我在我的 WPF 项目和 MaterialDesign 中使用 .Net 8.0。我的问题是我想创建一个菜单,其中根 MenuItem 有一个加号图标,但由于某种原因尝试创建一个图标...

回答 2 投票 0

创建时实时加载按钮 | WPF

我是 WPF 新手,我正在尝试将 x 数量的单选按钮动态添加到表单中的导航面板中。我已经成功读取了存储每个按钮和产品名称的文件...

回答 1 投票 0

绑定到 TreeViewItem.IsExpanded 只有一种方式

我有以下控件(摘录) 我有以下控件(摘录) <TreeView x:Name="provenanceTree" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" ItemsSource="{x:Bind ProvenanceTreeItems}" SelectionMode="Single" > <TreeView.ItemTemplate> <DataTemplate x:DataType="local:IProvenance"> <TreeViewItem ItemsSource="{x:Bind Children}" IsExpanded="{x:Bind isExpanded, Mode=TwoWay}"> <!-- The template - not relevant here, I think --> </TreeViewItem> </DataTemplate> </TreeView.ItemTemplate> </TreeView> 当然,我的想法是我希望能够扩展和压缩数据源中的树视图项。 isExpanded 是在 IProvenance 的实现中定义的: public static DependencyProperty isExpandedProperty = DependencyProperty.Register( nameof (isExpanded), typeof (bool), typeof (Expandable), new PropertyMetadata (false)); public bool isExpanded { get=> (bool)GetValue(isExpandedProperty); set => SetValue(isExpandedProperty, value); } 我认为没有什么值得警惕的。 我的问题是双向绑定似乎不起作用。 当新项目添加到树中时,isExpanded中的值将被遵守(正如我可以通过更改属性元数据来显示的那样)。 当我使用 UI 扩展和压缩项目时,isExpanded 会正确更新。 但是,当我在填充树后更改代码中的 isExpanded 时,什么也没有发生。 (值更新正确 - 我在调试器中看到过 - 只是树视图没有改变。) 我找到了这个答案,但我认为它对我没有帮助,因为我使用的是Winui 3(其中HierarchicalDataTemplate不可用,并且样式内部的绑定是有问题的)。 我忘记了什么? 让我向您展示一个在其子项展开时展开的 TreeView 的工作示例: Shell.xaml <Page x:Class="WinUIApp1.Shell" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="using:WinUIApp1" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" mc:Ignorable="d"> <Grid RowDefinitions="Auto,*"> <StackPanel Grid.Row="0" Orientation="Horizontal"> <Button Content="Expanding Test" Click="ExpandingTestButton_Click"/> </StackPanel> <TreeView Grid.Row="1" ItemsSource="{x:Bind Items}"> <TreeView.ItemTemplate> <DataTemplate x:DataType="local:Item"> <TreeViewItem Content="{x:Bind Content}" IsExpanded="{x:Bind IsExpanded, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{x:Bind Children, Mode=OneWay}" /> </DataTemplate> </TreeView.ItemTemplate> </TreeView> </Grid> </Page> Shell.xaml.cs public sealed partial class Shell : Page { public Shell() { InitializeComponent(); AddTestItems(); } public ObservableCollection<Item> Items { get; } = []; private void AddTestItems() { var item1 = new Item("Item 1"); var item1Child1 = new Item("Item 1-1"); var item1GrandChild1 = new Item("Item 1-1-1"); var item1GrandChild2 = new Item("Item 1-1-2"); item1Child1.Children.Add(item1GrandChild1); item1Child1.Children.Add(item1GrandChild2); item1.Children.Add(item1Child1); Items.Add(item1); var item2 = new Item("Item 2"); var item2Child1 = new Item("Item 2-1"); var item2GrandChild1 = new Item("Item 2-1-1"); var item2GrandChild2 = new Item("Item 2-1-2"); item2Child1.Children.Add(item2GrandChild1); item2Child1.Children.Add(item2GrandChild2); item2.Children.Add(item2Child1); Items.Add(item2); } private void ExpandingTestButton_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e) { Items[0].IsExpanded = true; //Items[0].Children[0].IsExpanded = true; } } Item.cs public partial class Item : ObservableObject { [ObservableProperty] private bool _isExpanded; public Item(string content) { Content = content; Children.CollectionChanged += Children_CollectionChanged; } public event EventHandler<bool>? IsExpandedChanged; public ObservableCollection<Item> Children { get; } = []; public string Content { get; } private void Children_CollectionChanged(object? sender, NotifyCollectionChangedEventArgs e) { if (e.NewItems != null) { foreach (Item child in e.NewItems) { child.IsExpandedChanged += Child_IsExpandedChanged; } } if (e.OldItems != null) { foreach (Item child in e.OldItems) { child.IsExpandedChanged += Child_IsExpandedChanged; } } } private void Child_IsExpandedChanged(object? sender, bool isExpanded) { if (isExpanded is true) { IsExpanded = true; } } partial void OnIsExpandedChanged(bool value) { IsExpandedChanged?.Invoke(this, value); } } 备注 ObservableObject 和 ObservableProperty 来自 CommunityToolkit.Mvvm NuGet 包。

回答 1 投票 0

如何右对齐 WPF 中的“帮助”菜单项?

我的 XAML 文件中有以下(简化的)部分: 我的 XAML 文件中有以下(简化的)部分: <Menu Width="Auto" Height="20" Background="#FFA9D1F4" DockPanel.Dock="Top"> <MenuItem Header="File"> <MenuItem Header="Exit"/> </MenuItem> <MenuItem Header="Edit"> <MenuItem Header="Cut"/> </MenuItem> <MenuItem Header="Help"> <MenuItem Header="About"/> </MenuItem> </Menu> 其结果是: +-------------------------------------------+ | File Edit Help | +-------------------------------------------+ | | 如果我想要右侧的Help菜单项,我需要做什么: +-------------------------------------------+ | File Edit Help | +-------------------------------------------+ | | 同样的原理,这次你不需要网格,因此不需要知道项目的数量。 将除帮助之外的所有项目分配到左侧:) <Menu Height="20" Background="#FFA9D1F4"> <Menu.ItemsPanel> <ItemsPanelTemplate> <DockPanel HorizontalAlignment="Stretch"/> </ItemsPanelTemplate> </Menu.ItemsPanel> <MenuItem Header="File"> <MenuItem Header="Exit"/> </MenuItem> <MenuItem Header="Edit"> <MenuItem Header="Cut"/> </MenuItem> <MenuItem Header="Help" HorizontalAlignment="Right"> <MenuItem Header="About"/> </MenuItem> </Menu> 另一个可能的答案,如果您总是知道会有多少个菜单项(这使得这个答案变得脆弱),是将 Menu.ItemsPanel 定义为网格,将 Menu 设置为 Stretch,适当设置 Grid.ColumnDefinitions,设置将 MenuItems 添加到适当的 Grid.Column,并将最后一个菜单项的 HorizontalAlignment 设置为 Right。 <Menu Height="20" Background="#FFA9D1F4" DockPanel.Dock="Top" HorizontalAlignment="Stretch"> <Menu.ItemsPanel> <ItemsPanelTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> </Grid> </ItemsPanelTemplate> </Menu.ItemsPanel> <MenuItem Header="File" Grid.Column="0"> <MenuItem Header="Exit"/> </MenuItem> <MenuItem Header="Edit" Grid.Column="1"> <MenuItem Header="Cut"/> </MenuItem> <MenuItem Header="Help" Grid.Column="2" HorizontalAlignment="Right"> <MenuItem Header="About"/> </MenuItem> </Menu> 对原始答案的更改,因为按原样(HorizontalAlignment =“Stretch”)编辑菜单将一直延伸到菜单栏到帮助菜单。 还纳入了Rokke的子菜单对齐建议... <Menu Height="20" Background="#FFA9D1F4"> <Menu.ItemsPanel> <ItemsPanelTemplate> <DockPanel/> </ItemsPanelTemplate> </Menu.ItemsPanel> <MenuItem Header="File"> <MenuItem Header="Exit"/> </MenuItem> <MenuItem Header="Edit"> <MenuItem Header="Cut"/> </MenuItem> <MenuItem Header="_Help" HorizontalAlignment="Right" FlowDirection="RightToLeft"> <MenuItem Header="About..." FlowDirection="LeftToRight"/> </MenuItem> </Menu> <Menu DockPanel.Dock="Top"> <Menu.ItemsPanel> <ItemsPanelTemplate> <DockPanel HorizontalAlignment="Stretch"/> </ItemsPanelTemplate> </Menu.ItemsPanel> <MenuItem Header="_File"> <MenuItem Click="Exit_Clicked" Header="E_xit" /> </MenuItem> <MenuItem Header="_User"> <MenuItem Click="ChangePassword_Clicked" Header="_Change Password..." /> </MenuItem> <!-- Right adjusted help menu with sub menu keeping inside the main window --> <MenuItem Header="_Help" HorizontalAlignment="Right" FlowDirection="RightToLeft"> <MenuItem Click="About_Clicked" Header="_About..." FlowDirection="LeftToRight" /> </MenuItem> </Menu> 只是对原始答案的一个小补充。包括两个流动方向使子菜单保留在窗口内。 我认为没有简单的方法。 Menu 将所有 Item 保留在一侧,甚至忽略 Menu 的 HorizontalContentAlignment 或 MenuItem 的 HorizontalAlignment。 但是你可以采取解决方法。 margin 属性有效。所以我认为你可以将帮助菜单项的边距绑定到菜单的宽度。但您必须使用转换器来计算宽度的边距。 我不知道这样做是否好。我不会。但如果你真的想要它,那应该是一种可行的方法。 使用 DockPanel 或 Grid 而不是默认的 WrapPanel 有一个(也许是两个)潜在缺点。 如果窗口太小而无法在一行上显示所有菜单项,它们将不会换行到下一行。 如果菜单项将共享以在不同的上下文中使用,例如在上下文菜单中,则最后一个项目将右对齐 量化 100克 卡路里 387 戈杜拉斯·托泰斯 0 克 Gorduras Saturadas 0 克 胆固醇 0 毫克 钠 1 毫克 钾 2 毫克 碳水化合物 100 克 Fibra Alimentar 0 克 阿苏卡 100 克 蛋白质 0 克 维生素 C 0 毫克 钙 1 毫克 铁 0.1 毫克维生素 D 0 IU 维生素 B6 0 毫克 钴胺素 0 微克 镁 0 毫克 别再吃糖了

回答 7 投票 0

如何在使用自定义窗口镶边时向 WPF 标题栏添加按钮?

我正在尝试创建一个简单的按钮模板,其中按钮通常看起来像一条水平线,但是当鼠标悬停在按钮上时,按钮后面会显示一个“矩形”颜色填充......

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.