可扩展应用程序标记语言(XAML)是一种基于XML的声明式语言,用于在各种框架中初始化结构化值和对象。当问题是关于具有特定框架的XAML的使用时,还应该提供框架的标签,例如, [wpf](Windows Presentation Foundation),[silverlight],[windows-phone],[windows-store-apps](Windows 8商店应用),[win-universal-app],[xamarin.forms]或[工作流程 - 基础]
我有一个 Maui 应用程序,我在物理 Android 设备上调试和测试它。我一直没有遇到任何问题,但现在当我切换到应用程序的两侧时,它崩溃了。崩溃仅出现在发布模式...
我目前正在学习 WPF 和 C# 编程,但我在理解绑定等方面遇到了困难。 我陷入了将函数或命令“绑定”到网格中的 XAML 对象的困境。 ...
TouchBehavior.CommandParameter 和 TouchBehavior.LongPressCommandParameter 始终作为 null 传递给 Command 和 LongPressCommand。 在下面的示例中,当 CollectionVi 中的某个项目...
我发现passwordreveal方法不适用于wpf中的密码框,有什么方法可以通过复选框显示和隐藏密码吗? 我希望显示/隐藏密码框中存在的功能...
如何强制 .NET MAUI ContentView 填充其 FlexLayout 父级的整个剩余空间?
我在 .NET Core MAUI 项目中有以下自定义控件 XAML: 我在 .NET Core MAUI 项目中有以下自定义控件 XAML: <?xml version="1.0" encoding="UTF-8"?> <ContentView xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MyNamespace.LabelledEntry" x:Name="this"> <VerticalStackLayout BindingContext="{x:Reference this}"> <Border Stroke="Red" StrokeThickness="2"> <FlexLayout> <Label Text="{Binding LabelText}" /> <Border Stroke="Black" StrokeThickness="1"> <!-- This is the main line that seems to not be working as expected --> <ContentView FlexLayout.Grow="1"> <ContentView.Triggers> <DataTrigger Binding="{Binding IsRightAligned}" TargetType="ContentView" Value="True"> <Setter Property="Content"> <Setter.Value> <!-- The HorizontalTextAlignment attribute on this element is all that I *really* want to work, and the only reason that I'm using this whole over- complicated inner ContentView --> <Entry Margin="{Binding EntryMargin}" Text="{Binding EntryText}" HorizontalTextAlignment="End" /> </Setter.Value> </Setter> </DataTrigger> </ContentView.Triggers> <Entry Margin="{Binding EntryMargin}" Text="{Binding EntryText}" HorizontalTextAlignment="Start" /> </ContentView> </Border> </FlexLayout> </Border> <Line Margin="0, -5, 0, 0" Stroke="Black" StrokeThickness="2" X2="{Binding Width, Source={RelativeSource Self}}" /> </VerticalStackLayout> </ContentView> 其使用方法如下: <Grid Colum<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:converters="clr-namespace:Microsoft.Maui.Converters;assembly=Microsoft.Maui" xmlns:local="clr-namespace:MyNamespace" xmlns:system="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MyNamespace.MainPage" x:Name="TestView"> <Grid ColumnDefinitions="0.7*, 0.3*"> <VerticalStackLayout Grid.Column="0" Grid.Row="0" Margin="15, 25, 0, 0" Spacing="10"> <Grid ColumnDefinitions="0.75*, 0.25*"> <local:LabelledEntry EntryText="vdsvdsvdfsvfvsdfv" Grid.Column="0" LabelText="Email:" /> <local:LabelledEntry EntryText="vfdvdfbvdfb" Grid.Column="1" LabelText="Attn:" /> </Grid> <local:LabelledEntry EntryText="fdfbfdbbdfb" LabelText="To:" /> <local:LabelledEntry EntryMargin="38, -10, 0, 0" EntryText="vdsvdsvdsvdsvdsvds" LabelText="" /> </VerticalStackLayout> <VerticalStackLayout Grid.Column="1" Grid.Row="0" Margin="50, 25, 0, 0" Spacing="10"> <local:LabelledEntry EntryText="{Binding Source={x:Static system:DateTime.Now}, StringFormat='{0:d/MM/yyyy}'}" LabelText="Date:" IsRightAligned="True" /> <local:LabelledEntry EntryText="(00) 0000 0000" LabelText="Phone No. 1:" IsRightAligned="True" /> <local:LabelledEntry EntryText="ujhghjbvjkgv" LabelText="Contact Name:" /> </VerticalStackLayout> </Grid> </ContentPage> 此控件没有隐藏代码,它看起来像此屏幕截图中的红框元素1: 正如代码注释中提到的,我真正想要做的就是将其中一些 <LabelledEntry> 控件的文本右对齐,同时默认为左对齐。因此,如果我把这个问题过于复杂化,请告诉我,但从我所有的研究来看,这种复杂程度似乎确实是必要的。内部黑边ContentView是我想要让它成长的。根据 Microsoft 的此文档页面: float 类型的 Grow 属性指定子项应在主轴上使用的可用空间量。该属性的默认值为0.0,其值必须大于或等于0。 当 Wrap 属性设置为 NoWrap 并且一行子级的总宽度小于 FlexLayout 的宽度,或者一列子级的高度小于 FlexLayout 时,使用 Grow 属性。 Grow 属性指示如何在子级之间分配剩余空间。 如果单个子项被赋予正的 Grow 值,则该子项将占用所有剩余空间。或者,剩余的空间也可以分配给两个或更多的孩子。 因此,如果我理解正确,我的代码应该按照我的预期执行 - 使内部 <ContentView> 展开以填充其父级,以便 HorizontalTextAlignment 属性执行其建议的操作 - 但显然情况并非如此,因为日期和电话号码不是右对齐的,而且它们的边框显示它们也不是全角的。那么我在这里做错了什么? MTIA :-) 1:以防不明显,边框和边距只是为了帮助可视化所有相关元素的宽度,纯粹是为了演示而添加的。 没关系,在更改了其他完全不相关的内容后,这个问题突然自行修复了(或者至少它似乎与我无关)! 不过,我想暂时保留这个问题,以防万一问题在某个时候再次出现……但我将把它留给第一个看到这个问题的模组来确定这是否令人满意; -)
用双精度存储十进制数?使用 updatesourcetrigger 作为 PropertyChanged 的属性
我正在使用WPF/MVVM。 我将 textbox.Text 绑定到视图模型中的可为空的双精度值。 UpdateSourceTrigger = PropertyChanged 而不是 Lostfocus。因此,当每次迪...
MAUI-为 BindableLayout 的每个元素设置动画
所以,我有一个绑定到项目列表的 StackLayout,其本质上的功能类似于列表/集合视图,它看起来类似于: 所以,我有一个绑定到项目列表的 StackLayout,本质上功能类似于列表/集合视图,它看起来与此类似: <StackLayout BindableLayout.ItemsSource="{Binding Items}"> <BindableLayout.ItemTemplate> <DataTemplate x:DataType="Item"> <Frame> .......... </Frame> </DataTemplate> </BindableLayout> </StackLayout> 我想要做的是在每个帧渲染时添加动画。我的动画代码工作正常,但是当我将其绑定到每个项目的框架时,动画会同时为所有项目播放,而我希望它为每个项目延迟开始,以获得惊人的效果。基本上类似于 这个开发博客中呈现的动画 . 据我所知,任何 MAUI 组件都不再有 AttachedHandler,相反,您必须使用看起来有点令人困惑的行为。我尝试遵循有关行为的文档,并向项目的 Loaded 事件添加自定义动画,但最终结果是相同的,所有动画同时播放。 此外,我在使用 ListViews/CollectionViews 时遇到了很多其他问题,所以我宁愿坚持当前的实现,除非没有其他解决方案。 是否有任何简单的方法可以实现这种每个项目都有延迟动画的效果? 我尝试迭代列表并使每个动画具有不同的延迟,但这不起作用。尝试使用 Task.Delay 来延迟动画似乎只是延迟了项目的常见动画。 我相信在您的情况下,您会使用事件 VisualElement.Loaded 或 Element.HandlerChanged 而不是 HandlerChanged <Frame Loaded="Frame_Loaded"> <Frame HandlerChanged="Frame_HandlerChanged">
根据构建配置选择 XAML 文件(Visual Studio 2022、WPF)
使用 Visual Studio 2022、C#、WPF、.NET Framework 4.7.2 项目。 有没有什么方法可以在构建时选择 XAML 文件,例如基于构建配置或编译符号,或任何东西......
在.NET MAUI中为CollectionView正确设置RadioButtonGroup
在 .NET MAUI 应用程序中,我使用 CollectionView 来显示特定的 ItemTemplate,其中还包括 RadioButtons。然而,互斥状态并未实现,因为不知何故......
我有一个带有消息图标的底部选项卡栏,它显示带有消息的选项卡(ShellContent)页面。现在如何在选项卡栏图标顶部动态显示数字,示例用例:显示数字 2 ...
如何更改所选视图指示器(蓝线)的外观(例如高度、宽度、颜色、位置等)? 文本框示例: 组合框示例: 编辑1: 这是我唯一发现的东西......
最终目标 剪辑一个心形的图像。 试图 我已将此源的 svg 路径数据转换为其等效的几何图形。除了我必须旋转最终的几何对象,除非......
如何让屏幕阅读器以类似于读取 Win32 MessageBox 的方式读取我的 WPF 消息?
我们有一个 WPF 桌面应用程序,需要显示一些自定义消息窗口。我无法让屏幕阅读器(例如 Freedom Scientific 的 JAWS)正确朗读它们......
[QueryProperty("文件名", "文件名_")] 公共部分类DetailsViewModel:ObservableObject { [可观察属性] 字符串文件名; 部分无效
Xamarin 表单:如何在滚动时使视频居中(如 tiktok)
我正在研究xamarin表单。我正在显示我的 carrouselView 上有负载的视频。我想在向上或向下滚动时将项目居中,以便用户不必滚动多次来居中
在我的 XAML 文件中,内容页面标签如下所示: 在我的 XAML 文件中,内容页面标签如下所示: <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:viewmodel="clr-namespace:Tester.ViewModel" x:DataType="viewmodel:Viewmodel" x:Class="Tester.View.NewDb" BackgroundColor="DarkGreen"> <ContentPage.Resources> <toolkit:InvertedBoolConverter x:Key="InvertedBoolConverter" /> </ContentPage.Resources> 所以我有一个名为 Viewmodel 的类,用于数据绑定。 我正在尝试将输入控件绑定到复选框控件,如下所示: <Entry Placeholder="Enter Database Password" Grid.Row="2" Margin="20,0,20,0" TextColor="White" x:Name="dbPasswd" BindingContext="{x:Reference chkShowPasswd}" IsPassword="{Binding IsChecked, Converter={StaticResource InvertedBoolConverter}}"/> <HorizontalStackLayout Grid.Row="2" Grid.Column="1" HorizontalOptions="Center"> <CheckBox x:Name="chkShowPasswd" VerticalOptions="Center"/> <Label Text="Show Password" TextColor="White" FontSize="Micro" VerticalOptions="Center"/> </HorizontalStackLayout> 当我运行该程序时,我收到一条错误消息: 绑定:在 Tester.ViewModel.Viewmodel.cs 上找不到属性“IsChecked” 现在我在这里有更多的入口控件,我希望将它们绑定到 Viewmodel 代码隐藏中的 ObservableObjects 以及其他任务和方法。 所以我的问题是,如何绑定我在视图模型中显示的两个控件? 在绑定源中指定对复选框的引用: <Entry x:Name="dbPasswd" Grid.Row="2" Margin="20,0,20,0" IsPassword="{Binding IsChecked, Source={x:Reference chkShowPasswd}, Converter={StaticResource InvertedBoolConverter}}" Placeholder="Enter Database Password" TextColor="White" />
我有一个 .svg 格式的图像,我正在将其转换为 .xaml 格式,并且我想将其用作图像源,据我所知这是可能的。但我的应用程序中还有另一个问题,即近 10 个用户为它们着色......
为什么我的 Liveshare 合作伙伴看不到 Visual Studio 2022 上的 XAML 设计器?
如果我们尝试编写 WPF 应用程序并邀请我的朋友参加 LiveShare 会话,他只能看到 XAML 代码,而看不到设计器。其他一切都很好。 LiveShare 的其他一切都是...
为什么我的 Liveshare 合作伙伴看不到 Visual Studio 2022 上的 XAML 设计器?
如果我们尝试编写 WPF 应用程序并邀请我的朋友参加 LiveShare 会话,他只能看到 XAML 代码,而看不到设计器。其他一切都很好。 LiveShare 的其他一切都是...