可扩展应用程序标记语言(XAML)是一种基于XML的声明式语言,用于在各种框架中初始化结构化值和对象。当问题是关于具有特定框架的XAML的使用时,还应该提供框架的标签,例如, [wpf](Windows Presentation Foundation),[silverlight],[windows-phone],[windows-store-apps](Windows 8商店应用),[win-universal-app],[xamarin.forms]或[工作流程 - 基础]
尝试对 Path StrokeProperty 进行动画处理会抛出无效操作异常
我有代码,当达到某个值时,我想将路径的描边闪烁为红色。当我尝试像这样应用动画时,它会显示“''System.Windows.Media.Animation.DoubleAnimati...
关于WPF DropShadow效果性能的问题还蛮多的,答案一般都是 尽量避免它 不要将其应用于复杂的祖先,而将其应用于具有光明的兄弟姐妹......
我的 XAML 中有以下检查 我的 XAML 中有以下检查 <StackLayout Orientation="Horizontal" VerticalOptions="Center" Spacing="15" BackgroundColor="Yellow"> <CheckBox IsChecked="{Binding SuperUser , Mode=TwoWay}" Color="White" BackgroundColor="Green" /> <Label Style="{StaticResource CheckBoxText}" Margin="0,0,0,0" Text="{x:Static strings:Strings.config_super_user}"/> </StackLayout> 结果几乎就是我们想要的,如下所示: 因此,通过设置复选框的背景颜色,我们可以影响复选标记的颜色。 我面临的挑战是复选框周围的所有额外背景颜色(超出复选框“颜色”区域的绿色)。 知道如何摆脱它吗? 您可以完全构建自己的 CheckBox 外观,只需将原始设置设置为 Opacity=0,然后在其下方绘制自己的外观。这将使您完全控制背景、复选标记形状、颜色等。 <Grid HeightRequest="32" WidthRequest="32"> <Frame BackgroundColor="Transparent" BorderColor="Green" CornerRadius="5" HeightRequest="20" HorizontalOptions="Center" VerticalOptions="Center" WidthRequest="20"> <Frame.Triggers> <DataTrigger Binding="{Binding IsChecked, Source={x:Reference checkBox}}" TargetType="Frame" Value="True"> <Setter Property="BackgroundColor" Value="Green" /> </DataTrigger> </Frame.Triggers> </Frame> <Path Data="M 10 16 l 4 4 l 6 -6" IsVisible="{Binding IsChecked, Source={x:Reference checkBox}}" Stroke="White" /> <CheckBox x:Name="checkBox" Opacity="0" /> </Grid>
我有别人的基于 WPF 的 .NET 3.5 应用程序,我正在尝试将其更新到 .NET 4.5。代码在 .NET 3.5 下运行良好,我在 Windows 7 上运行 Visual Studio 2013 Express。更新似乎......
我正在尝试将自定义对象列表绑定到 WPF 图像,如下所示: 我正在尝试将自定义对象列表绑定到 WPF 图像,如下所示: <Image> <Image.Source> <BitmapImage UriSource="{Binding Path=ImagePath}" /> </Image.Source> </Image> 但这不起作用。这是我收到的错误: “必须设置属性‘UriSource’或属性‘StreamSource’。” 我错过了什么? WPF 具有针对某些类型的内置转换器。如果将图像的 Source 属性绑定到 string 或 Uri 值,WPF 将在后台使用 ImageSourceConverter 将值转换为 ImageSource。 所以 <Image Source="{Binding ImageSource}"/> 如果 ImageSource 属性是图像有效 URI 的字符串表示形式,则可以使用。 您当然可以推出自己的绑定转换器: public class ImageConverter : IValueConverter { public object Convert( object value, Type targetType, object parameter, CultureInfo culture) { return new BitmapImage(new Uri(value.ToString())); } public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture) { throw new NotSupportedException(); } } 并像这样使用它: <Image Source="{Binding ImageSource, Converter={StaticResource ImageConverter}}"/> Atul Gupta 的这篇文章 提供了涵盖多种场景的示例代码: 常规资源图像绑定到 XAML 中的 Source 属性 绑定资源图片,但是来自代码后面 在代码后面使用 Application.GetResourceStream 绑定资源图片 通过内存流从文件路径加载图像(从数据库加载博客图像数据时同样适用) 从文件路径加载图像,但使用绑定到文件路径属性 通过依赖属性将图像数据绑定到内部具有图像控件的用户控件 与第 5 点相同,但还要确保文件不会被锁定在硬盘上 您也可以简单地设置 Source 属性,而不是使用子元素。 为此,您的类需要将图像作为位图图像返回。 这是我完成的一种方法的示例 <Image Width="90" Height="90" Source="{Binding Path=ImageSource}" Margin="0,0,0,5" /> 而类属性就是这样 public object ImageSource { get { BitmapImage image = new BitmapImage(); try { image.BeginInit(); image.CacheOption = BitmapCacheOption.OnLoad; image.CreateOptions = BitmapCreateOptions.IgnoreImageCache; image.UriSource = new Uri( FullPath, UriKind.Absolute ); image.EndInit(); } catch{ return DependencyProperty.UnsetValue; } return image; } } 我想这可能比值转换器多一点工作,但它是另一种选择。 您需要实现 IValueConverter 接口,将 uri 转换为图像。 IValueConverter 的 Convert 实现将如下所示: BitmapImage image = new BitmapImage(); image.BeginInit(); image.UriSource = new Uri(value as string); image.EndInit(); return image; 然后您需要在绑定中使用转换器: <Image> <Image.Source> <BitmapImage UriSource="{Binding Path=ImagePath, Converter=...}" /> </Image.Source> </Image> 此处选择的答案的问题是,来回导航时,每次显示页面时都会触发转换器。 这会导致不断创建新文件句柄,并阻止任何删除该文件的尝试,因为该文件仍在使用中。这可以使用 Process Explorer 进行验证。 如果图像文件可能在某个时候被删除,则可以使用如下转换器: 使用 XAML 将 System.Drawing.Image 绑定到 System.Windows.Image 控件中 这种内存流方法的缺点是每次都会加载和解码图像并且无法进行缓存: “为了防止图像被多次解码,请从 Uri 分配 Image.Source 属性,而不是使用内存流” 来源:“使用 XAML 的 Windows 应用商店应用程序的性能提示” 为了解决性能问题,可以使用存储库模式来提供缓存层。缓存可能发生在内存中,这可能会导致内存问题,或者作为缩略图文件驻留在临时文件夹中,当应用程序退出时可以将其清除。 你可以使用 ImageSourceConverter 类 得到你想要的 img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Assets/check.png");
Avalonia - 根据集合值更改 DataTemplate 会引发 ArgumentOutOfRangeException
我正在学习 Avalonia,并尝试根据自定义对象的 ObservableCollection 中的属性在两个不同的 DataTemplate 之间进行 ItemsControl 切换。 我有一个 ObservableCollecti...
尽管在 App.xaml 中设置全局 ItemContainerStyle,ListViewItem 背景并未更改
我正在开发一个 WPF 应用程序,我想将全局样式应用于应用程序中的所有 ListViewItem 元素。我在 App.xaml 中为 ListViewItem 定义了一个 ItemContainerStyle,目的是
我已经阅读了所有类似的问题,看看其中一个解决方案是否适合我,但到目前为止没有一个对我有用。我正在尝试在 C# WPF .NET 中构建一个窗口项目,我真的...
再见, 我希望我的组合框选择其中的第一项。我正在使用 C# 和 WPF。 我从数据集中读取数据。要填充组合框: DataTable siteTable = clGast.SelectAll().Tables[0]; cbGa...
我简化一切以更好地集中问题 这是显示卡片视图的页面 我简化一切以更好地集中问题 这是显示卡片视图的页面 <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:controls="clr-namespace:TestCard" x:Class="TestCard.MainPage" Title="Test Card"> <ContentPage.Resources> <ControlTemplate x:Key="TestCardView"> <Label x:Name="lblTitolo" Text="{TemplateBinding TitoloCardView}" /> </ControlTemplate> </ContentPage.Resources> <VerticalStackLayout BindingContext="{Binding Source={RelativeSource TemplatedParent}}"> <controls:ControlCardViews x:Name="ctrlName01" TitoloCardView="Questo è il primo Titolo" ControlTemplate="{StaticResource TestCardView}" /> <controls:ControlCardViews x:Name="ctrlName02" TitoloCardView="Secondo Titolo" ControlTemplate="{StaticResource TestCardView}" /> </VerticalStackLayout> </ContentPage> 这里我检查cardview数据 namespace TestCard; public class ControlCardViews : ContentView { public static readonly BindableProperty TitoloCardViewProperty = BindableProperty.Create(nameof(TitoloCardView), typeof(string), typeof(ControlCardViews), string.Empty); public string TitoloCardView { get => (string)GetValue(TitoloCardViewProperty); set => SetValue(TitoloCardViewProperty, value); } } 我想设置/修改“TitoloCardView”的文本,而不是在 xaml 文件中,而是作为 C# 代码 我也想创建这个部分 <controls:ControlCardViews x:Name="ctrlName01" TitoloCardView="Questo è il primo Titolo" ControlTemplate="{StaticResource TestCardView}" /> <controls:ControlCardViews x:Name="ctrlName02" TitoloCardView="Secondo Titolo" ControlTemplate="{StaticResource TestCardView}" /> 不是 xaml 代码,而是 C# 代码 谢谢 我尝试用谷歌搜索它,但我找不到任何关于如何修复它的想法 这是我推荐的修复方法。 在您的项目 > 资源 > 样式中,创建名为 ControlTemplates.xaml 的新 ResourceDictionary 文件,并将您的控件模板放置在那里。 BindingContext="{Binding Source={RelativeSource TemplatedParent}}" 应用于您的控件模板。 Binding 而不是 TemplateBinding,您在控件模板中使用 Binding。 所以它看起来应该与此接近: <ControlTemplate x:Key="MyTemplate".. <Grid BindingContext="{Binding Source={RelativeSource TemplatedParent}}"... <SomeControl Something="{Binding Something}"... <AnotherControl SomethingElse="{Binding SomethingElse}"... 在 App.xaml 中,添加资源字典,如下所示: 在页面 XAML 中,当您使用 ControlTemplate 时,无需指定绑定上下文。在左侧,您有 ContentView,其中包含可绑定属性。在右侧部分,您指定 ControlTemplate,因此它知道这些属性如何在屏幕上实际呈现,以及它们绑定到哪些特定控件。这样就够了。 完成。现在您可以在代码中更改这些属性,UI 将做出响应。 (MVVM是另一个话题,我暂时先不说,因为我说的已经够混乱了。)
我正在使用 MVVM 模式在 WPF 上创建图形编辑器。现在,我陷入了用户使用菜单调用对话框窗口的时刻,并且当用户将数据输入到绑定到名称属性的文本框时,什么都没有...
在 WPF 应用程序上看到绘图图像时看起来非常小,我应该对绘图图像进行哪些更改,以便图像在应用程序上看起来更大一点? 在 WPF 应用程序上看到绘图图像时看起来非常小,我应该在绘图图像中进行哪些更改,以便图像在应用程序上看起来更大一点? <DrawingImage x:Key="_3516599_configuration_list_options_preferences_setting_iconDrawingImage"> <DrawingImage.Drawing> <DrawingGroup ClipGeometry="M0,0 V48 H48 V0 H0 Z"> <DrawingGroup Opacity="1"> <DrawingGroup Opacity="1"> <GeometryDrawing Brush="#FF000000" Geometry="F0 M48,48z M0,0z M3.745,35.705L3.745,12.776C3.745,11.106,5.101,9.75,6.771,9.75L41.42,9.75C43.088,9.75,44.448,11.104,44.448,12.776L44.448,35.705C44.448,37.376,43.091,38.731,41.42,38.731L6.771,38.731C5.101,38.731,3.745,37.376,3.745,35.705z M42.534,35.705L42.534,12.776C42.534,12.165,42.036,11.666,41.42,11.666L6.771,11.666C6.158,11.666,5.661,12.163,5.661,12.776L5.661,35.705C5.661,36.317,6.158,36.816,6.771,36.816L41.42,36.816C42.034,36.816,42.534,36.317,42.534,35.705z" /> <GeometryDrawing Brush="#FF000000" Geometry="F0 M48,48z M0,0z M7.107,13.589C7.107,13.082 7.52,12.67 8.026,12.67 8.533,12.67 8.944,13.082 8.944,13.589 8.944,14.093 8.533,14.506 8.026,14.506 7.52,14.506 7.107,14.093 7.107,13.589z M9.707,13.589C9.707,13.082 10.119,12.67 10.625,12.67 11.131,12.67 11.544,13.082 11.544,13.589 11.544,14.093 11.131,14.506 10.625,14.506 10.119,14.506 9.707,14.093 9.707,13.589z M12.306,13.589C12.306,13.082 12.718,12.67 13.223,12.67 13.729,12.67 14.142,13.082 14.142,13.589 14.142,14.093 13.729,14.506 13.223,14.506 12.718,14.506 12.306,14.093 12.306,13.589z" /> </DrawingGroup> <GeometryDrawing Brush="#FF000000" Geometry="F0 M48,48z M0,0z M23.365,28.029L23.086,26.844C22.773,26.753,22.477,26.63,22.196,26.478L21.037,27.196C20.735,27.385,20.383,27.444,20.132,27.196L19.605,26.665C19.353,26.417,19.43,26.08,19.605,25.761L20.319,24.601C20.126,24.24,19.977,23.85,19.886,23.44L18.772,23.173C18.423,23.095,18.132,22.886,18.132,22.535L18.132,21.786C18.132,21.435,18.423,21.249,18.772,21.148L20.05,20.847 20.413,20.088C20.204,19.752 19.996,19.415 19.79,19.079 19.599,18.777 19.541,18.424 19.79,18.175L20.319,17.647C20.569,17.396,20.905,17.472,21.222,17.647L22.305,18.317 23.041,18.016C23.142,17.616 23.25,17.215 23.365,16.818 23.466,16.469 23.65,16.177 24.003,16.177L24.752,16.177C25.105,16.177,25.314,16.469,25.392,16.818L25.695,18.013 26.578,18.379C26.893,18.192 27.21,18.009 27.532,17.831 27.85,17.657 28.186,17.581 28.436,17.831L28.966,18.36C29.216,18.609,29.157,18.962,28.966,19.265L28.408,20.201 28.689,20.801C29.153,20.914 29.591,21.031 29.985,21.146 30.332,21.247 30.625,21.433 30.625,21.786L30.625,22.535C30.625,22.886,30.334,23.093,29.985,23.173L28.861,23.459 28.51,24.461C28.73,24.827 28.944,25.202 29.153,25.574 29.327,25.893 29.401,26.23 29.153,26.478L28.623,27.008C28.373,27.259,28.023,27.198,27.721,27.008L26.699,26.402C26.377,26.589,26.033,26.738,25.671,26.844L25.395,28.029C25.314,28.378,25.107,28.67,24.754,28.67L24.005,28.67C23.652,28.67,23.469,28.376,23.365,28.029z M26.668,22.424C26.668,21.161 25.642,20.135 24.377,20.135 23.118,20.135 22.092,21.161 22.092,22.424 22.092,23.684 23.118,24.71 24.377,24.71 25.642,24.71 26.668,23.684 26.668,22.424z" /> <GeometryDrawing Brush="#FF000000" Geometry="F0 M48,48z M0,0z M17.566,34.392L17.566,33.234 18.725,33.234 18.725,34.392 17.566,34.392z M19.549,34.392L19.549,33.234 20.707,33.234 20.707,34.392 19.549,34.392z M21.533,34.392L21.533,33.234 22.69,33.234 22.69,34.392 21.533,34.392z M23.515,34.392L23.515,33.234 24.676,33.234 24.676,34.392 23.515,34.392z M25.499,34.392L25.499,33.234 26.658,33.234 26.658,34.392 25.499,34.392z M27.482,34.392L27.482,33.234 28.642,33.234 28.642,34.392 27.482,34.392z M29.468,34.392L29.468,33.234 30.625,33.234 30.625,34.392 29.468,34.392z M17.566,32.543L17.566,31.383 18.725,31.383 18.725,32.543 17.566,32.543z M19.549,32.543L19.549,31.383 20.707,31.383 20.707,32.543 19.549,32.543z M21.533,32.543L21.533,31.383 22.69,31.383 22.69,32.543 21.533,32.543z M23.515,32.543L23.515,31.383 24.676,31.383 24.676,32.543 23.515,32.543z M25.499,32.543L25.499,31.383 26.658,31.383 26.658,32.543 25.499,32.543z M27.482,32.543L27.482,31.383 28.642,31.383 28.642,32.543 27.482,32.543z M29.468,32.543L29.468,31.383 30.625,31.383 30.625,32.543 29.468,32.543z" /> <GeometryDrawing Brush="#FF000000" Geometry="F0 M48,48z M0,0z M12.493,34.392L9.201,34.392C8.907,34.392 8.669,34.153 8.669,33.86 8.669,33.568 8.907,33.328 9.201,33.328L12.493,33.328C12.784,33.328 13.025,33.568 13.025,33.86 13.025,34.152 12.785,34.391 12.493,34.392z M37.648,34.392L34.355,34.392C34.062,34.392 33.824,34.153 33.824,33.86 33.824,33.568 34.062,33.328 34.355,33.328L37.648,33.328C37.939,33.328 38.179,33.568 38.179,33.86 38.179,34.152 37.94,34.391 37.648,34.392z M13.855,32.464L9.186,32.464C8.892,32.464 8.654,32.226 8.654,31.933 8.654,31.64 8.892,31.4 9.186,31.4L13.855,31.4C14.146,31.4 14.386,31.64 14.386,31.933 14.386,32.225 14.147,32.463 13.855,32.464z M39.01,32.464L34.341,32.464C34.047,32.464 33.809,32.226 33.809,31.933 33.809,31.64 34.047,31.4 34.341,31.4L39.01,31.4C39.301,31.4 39.541,31.64 39.541,31.933 39.541,32.225 39.302,32.463 39.01,32.464z M12.493,30.083L9.201,30.083C8.907,30.083 8.669,29.845 8.669,29.551 8.669,29.26 8.907,29.019 9.201,29.019L12.493,29.019C12.784,29.019 13.025,29.26 13.025,29.551 13.025,29.844 12.785,30.082 12.493,30.083z M37.648,30.083L34.355,30.083C34.062,30.083 33.824,29.845 33.824,29.551 33.824,29.26 34.062,29.019 34.355,29.019L37.648,29.019C37.939,29.019 38.179,29.26 38.179,29.551 38.179,29.844 37.94,30.082 37.648,30.083z M13.855,28.155L9.186,28.155C8.892,28.155 8.654,27.916 8.654,27.623 8.654,27.332 8.892,27.091 9.186,27.091L13.855,27.091C14.146,27.091 14.386,27.332 14.386,27.623 14.386,27.915 14.147,28.154 13.855,28.155z M39.01,28.155L34.341,28.155C34.047,28.155 33.809,27.916 33.809,27.623 33.809,27.332 34.047,27.091 34.341,27.091L39.01,27.091C39.301,27.091 39.541,27.332 39.541,27.623 39.541,27.915 39.302,28.154 39.01,28.155z" /> </DrawingGroup> </DrawingGroup> </DrawingImage.Drawing> </DrawingImage> 使用 DrawingImage 作为具有适当大小和 Source 值的 Image 元素的 Stretch: <Image Source="{StaticResource _3516599_configuration_list_options_preferences_setting_iconDrawingImage}" Width="100" Height="100" Stretch="Uniform"/> 如果您想在 XAML 中调整绘图的大小,您还可以使用如下所示的 Transform 节点: <DrawingImage x:Key="_3516599_configuration_list_options_preferences_setting_iconDrawingImage"> <DrawingImage.Drawing> <DrawingGroup ClipGeometry="M0,0 V48 H48 V0 H0 Z"> <DrawingGroup.Transform> <ScaleTransform ScaleX="0.5" ScaleY="0.5"/> </DrawingGroup.Transform> <DrawingGroup Opacity="1"> <DrawingGroup Opacity="1">...
当我将角度更改为 90 度时,我预计会出现以下情况: 但我得到的是这个: 我做错了什么? XAML: 当我将角度更改为 90 度时,我预计会出现以下情况: 但我得到的是这个: 我做错了什么? XAML: <Grid WidthRequest="100" HeightRequest="100" HorizontalOptions="Start" VerticalOptions="Start"> <Rectangle Fill="Yellow" Stroke="Black" StrokeThickness="2" /> <Path Fill="Blue" Aspect="Uniform" HorizontalOptions="Start" VerticalOptions="Start" Data="M 0,0 .5,.5 0,1 0,0"> <Path.RenderTransform> <RotateTransform Angle="0" CenterX="50" CenterY="50" /> </Path.RenderTransform> </Path> <Line X1="0" Y1="0" X2="{Binding Width}" Y2="{Binding Height}" Stroke="Black" /> <Line X1="{Binding Width}" Y1="0" X2="0" Y2="{Binding Height}" Stroke="Black" /> 你的问题很复杂。 其中一个原因是您的路径仅覆盖了网格的一半。如果你想让它渲染,你需要确保它填满所有空间。 现在您可以放置: <Path WidthRequest="100" HeightRequest="100"... 问题的第二部分是方面如何将三角形放置在画布上。 如果您只进行第一个更改,您将看到一个中心三角形,它围绕自身旋转。 现在您可以用以下内容替换方面和数据: ... Data="M 0,0 50,50 0,100 0,0" Aspect="None" ... 像这样旋转的另一种方法是应用变换链。 无需更改数据和方面,您可以用 TransformGroup 替换 RotateTransform。 <TransformGroup> <RotateTransform Angle="90" CenterX="50" CenterY="50" /> <TranslateTransform X="-25"/> </TransformGroup>
我想创建一个 ComboBox,其元素是枚举类型成员的子集。如果我曾经知道这个语法,我现在不记得了! 我基本上是在寻找相当于
将 DatePicker 和 TimePicker 控件的值存储在 SQLite 数据库中,然后检索它
我希望让用户选择一个时间,然后将该时间存储在我的 SQLite 数据库中。我遇到的问题是 SQLite 不支持 DatePicker/TimePicker 控件的 datetimeoffset 格式...
我有一个带有我编写的自定义主题的组合框,并且收到错误消息“无法在不可变对象上制作动画 (0).(1)”。当我在用户选择后设置其 selectedindex 时,特别会发生这种情况...
标题:尽管在 App.xaml 中设置全局 ItemContainerStyle,ListViewItem 背景并未更改
我正在开发一个 WPF 应用程序,我想将全局样式应用于应用程序中的所有 ListViewItem 元素。我在 App.xaml 中为 ListViewItem 定义了一个 ItemContainerStyle,目的是
是否可以使用带有附加事件的 Microsoft.Xaml.Behaviors.EventTrigger 来调用命令?
我正在尝试使用附加事件来调用 ICommand。 我正在使用 Microsoft.Toolkit.Mvvm NuGet 包以及 Microsoft.Xaml.Behaviors.Wpf Nuget 包。 我已经成功开始...
按钮命令未在 UserControl WPF MVVM 中触发
我有一个绑定到 RelayCommand AddCommand 的按钮命令,其代码位于我的 MainViewModel.cs 中。我面临的问题是我需要触发命令的按钮位于
我正在尝试在 MAUI 中使用 XAML 制作这样的卡片: Android 上的 XAML MAUI 卡 我在 Android 模拟器上遇到内容与实际边框(描边)重叠的问题。 当我在 Win 上运行它时...