xaml 相关问题

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

如何自定义 Maui 应用程序中的应用栏?

我是 .net MAUI 平台上的桌面开发新手,我在自定义应用程序栏时遇到了一个奇怪的问题。我想更改应用栏颜色并添加内容,但我不知道如何...

回答 2 投票 0

KeyDown 事件需要多次按下

我试图在按键盘上的左右键后更改 WPF 页面的某些元素。它工作得很好,我的问题是我需要按向右或向左键 3 次 e...

回答 1 投票 0

在 WPF 应用程序中使用 MediaElement 控件重复 gif 文件动画

我想使用 MediaElement 控件在 WPF 应用程序中重复播放 GIF (.gif) 文件。 下面我附上了我当前使用的代码。 我想使用 MediaElement 控件在 WPF 应用程序中重复播放 GIF (.gif) 文件。 下面我附上了我当前使用的代码。 <MediaElement x:Name="recImageMedia" Height="67" Margin="43,-70,816.2,0" LoadedBehavior="Play" Source="file://C:\Users\documents\visual studio 2013\Projects\Application\TempApplication\Snapshots\recordanim.gif" Visibility="Visible" /> StackOverflow 针对您的问题建议至少两种可能的解决方案。第一种是使用此处引用的 MediaTimeline 控件 MediaTimeline SO 答案 或者,您可能会发现利用 WPF MediaKit 中的 MediaElement 会有一些用处 WPF MediaKit SO 答案 这里有一个解决方案 <StackPanel> <!--1. Display GIF without animation--> <Image Source="loading.gif" Width="100" Height="100"/> <!--2. Display GIF and play once--> <MediaElement Name="me2" Source="loading.gif" UnloadedBehavior="Close" Width="100" Height="100"/> <!--3. Display GIF and loop playback, always repeat--> <MediaElement Name="me3" Source="loading.gif" ediaEnded="me_MediaEnded" UnloadedBehavior="Manual" Width="100" Height="100"/> </StackPanel> public partial class WindowSplash : Window { public WindowSplash() { InitializeComponent(); } private void me_MediaEnded(object sender, RoutedEventArgs e) { me3.Position = new TimeSpan(0, 0, 1); me3.Play(); } }

回答 2 投票 0

如何继承或覆盖 WinUI 3 控件的默认样式的元素?

我正在尝试学习如何在 WinUI 3(来自 WindowsAppSDK 1.1.1)中最有效地使用样式,但我很难让简单的继承发挥作用。 考虑 NavigationViewItem 类。我……

回答 2 投票 0

如何从 Maui Xaml 页面导航到 blazor 页面

我知道如何使用从 Blazor 导航到毛伊岛 App.Current.MainPage.Navigation.PushModalAsync(new MainPage()); 但我该如何反其道而行呢?我的毛伊岛应用程序中有一个剃须刀组件,还有一个...

回答 1 投票 0

尽管 IsEnabled 设置为 true,DataGrid 中的按钮仍被禁用

目标是将启用的按钮插入到 DataGrid 的列中。 在以下 XAML 代码片段中,将 Button 插入到 DataGrid 中,并将 IsEnabled 属性设置为 true。 目标是将启用的 Button 插入到 DataGrid 的列中。 在以下 XAML 代码片段中,将 Button 插入到 DataGrid 中,并将 IsEnabled 属性设置为 true。 <DataGrid Name="DgData" HorizontalAlignment="Left" Height="306" Margin="10,119,0,0" VerticalAlignment="Top" Width="637" Background="White"> <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource Self},Path=IsNewItem,Mode=OneWay}" /> </Style> </DataGrid.RowStyle> <DataGrid.Columns> <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Id" IsReadOnly="True" Visibility="Hidden"/> <DataGridTextColumn Header="Date" Binding="{Binding Date}" IsReadOnly="True" Width="100" CanUserResize="False"/> <DataGridTextColumn Header="Domain name" Binding="{Binding DomainName}" IsReadOnly="True" Width="105" CanUserResize="False"/> <DataGridTextColumn Header="Type" Binding="{Binding Relevance}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Category" Binding="{Binding DomainName}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Description" Binding="{Binding Content}" IsReadOnly="True" Width="200" CanUserResize="False"/> <DataGridTemplateColumn MinWidth="100" Header="Note" CanUserSort="True" CanUserResize="False"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Name="BtnShowNotes" IsEnabled="True" Click="BtnShowNotes_OnClick">Show</Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid> 但是,执行应用程序时,该按钮被禁用。 是什么导致了这个问题? 您的 RowStyle 将整行的 IsEnabled 属性设置为 false。删除此一项,Button 应启用: <DataGrid Name="DgData" HorizontalAlignment="Left" Height="306" Margin="10,119,0,0" VerticalAlignment="Top" Width="637" Background="White"> <DataGrid.Columns> <DataGridTextColumn Binding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Id" IsReadOnly="True" Visibility="Hidden"/> <DataGridTextColumn Header="Datum" Binding="{Binding Date}" IsReadOnly="True" Width="100" CanUserResize="False"/> <DataGridTextColumn Header="Doménové jméno" Binding="{Binding DomainName}" IsReadOnly="True" Width="105" CanUserResize="False"/> <DataGridTextColumn Header="Druh" Binding="{Binding Relevance}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Kategorie" Binding="{Binding DomainName}" IsReadOnly="True" Width="65" CanUserResize="False"/> <DataGridTextColumn Header="Popis" Binding="{Binding Content}" IsReadOnly="True" Width="200" CanUserResize="False"/> <DataGridTemplateColumn MinWidth="100" Header="Poznámky" CanUserSort="True" CanUserResize="False"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Name="BtnShowNotes" IsEnabled="True" Click="BtnShowNotes_OnClick">Zobrazit</Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid>

回答 1 投票 0

WPF 应用程序资源定位器无法定位文件

我对 .NET C# WPF 应用程序制作非常陌生,我遇到过这个名为 MaterialDesignInXaml 的包来风格化我的应用程序,但我无法让它工作。当我包含某个 do...

回答 1 投票 0

在 MAUI 中裁剪带有圆形边框的图像

我试图在.NET MAUI 中获得一个非常简单的圆角图像,布局如下: 我正在尝试在 .NET MAUI 中获得一个非常简单的圆角 Image,布局如下: <Grid Margin="16, 20" RowDefinitions="*, auto"> <Grid HorizontalOptions="Center" VerticalOptions="Center"> <Image Source="{Binding ImageSource}" Aspect="AspectFit" Grid.Row="0"> <Image.Behaviors> <behaviors:ClipToBoundsBehavior /> </Image.Behaviors> </Image> </Grid> <Grid Grid.Row="1" VerticalOptions="End"> <!-- some buttons you don't need to worry about --> </Grid> </Grid> 它本质上只是一个网格,中间有一个很大的图像区域,并且图像的大小和来源可以自由更改。 我尝试过的: 在图像周围创建一个 Frame 或 Border,并以这种方式圆角: 由于整个内容都包裹在行高为 Grid 的 * 中,因此 Frame 或 Border 最终会拉伸整个屏幕。 然后,我尝试在内容页面 Image 上获取 Loaded 请求的高度,并以这种方式动态更改 Frame 的高度,甚至在此函数中 protected override void LayoutChildren(double x, double y, double width, double height) { base.LayoutChildren(x, y, width, height); ImageHeight = Image.Height; } 高度返回一个巨大的数字(~2000)并且不起作用。我不知道为什么。 使用自定义 ClipToBoundsBehavior 为图像创建剪辑,如上所述。 Image 将进行渲染,但根本不进行剪辑,或者以非 Image 的高度和宽度的非常随机的数字进行剪辑。这是我的ClipToBoundsBehavior课程: public class ClipToBoundsBehavior : Behavior<Image> { private RoundRectangleGeometry _clipGeometry; protected override void OnAttachedTo(Image bindable) { base.OnAttachedTo(bindable); _clipGeometry = new RoundRectangleGeometry { CornerRadius = 15 }; bindable.Clip = _clipGeometry; bindable.SizeChanged += Bindable_SizeChanged; } protected override void OnDetachingFrom(Image bindable) { base.OnDetachingFrom(bindable); bindable.SizeChanged -= Bindable_SizeChanged; } private void Bindable_SizeChanged(object sender, EventArgs e) { if (sender is Image image) { _clipGeometry.Rect = new Rect(0, 0, image.Width, image.Height); image.Clip = _clipGeometry; } } } 我对此还很陌生,因此完全欢迎任何有助于加深我对其工作原理的理解的帮助。我也不反对尝试不同的路线,因为我对这么简单的事情有多困难感到非常沮丧。除非我在这里遗漏了一些东西。 感谢你们的帮助! 如果您只想在应用程序中显示漂亮的圆形图片,您可以使用Image.Clip。 samples repo 中也有很棒的示例,所以如果这不是您想要的,请去那里看看。 <Image Grid.Column="0" Aspect="AspectFill" HeightRequest="50" Source="{Binding ImageSource}" WidthRequest="50"> <Image.Clip> <EllipseGeometry Center="25,25" RadiusX="25" RadiusY="25" /> </Image.Clip> </Image>

回答 1 投票 0

将 Collection 类型的 AttachedProperty 绑定到 TemplatedParent

我想创建一个附加属性来保存 MenuItem 对象的集合。这些将在我的 GroupBox 自定义 ControlTemplate 中使用。在该 ControlTemplate 中,我想使用我的自定义

回答 1 投票 0

WPF:ItemsPanelTemplate 显示每个项目具有固定高度比例的元素

我想将 ItemsControl 与 ItemsSource 一起使用。我的问题是如何确保项目在显示时保持其高度比。这些项目可以有不同的尺寸,每次我调整尺寸

回答 1 投票 0

水平模式下 NavigationViewItems 的下划线太小

我正在 Widows 10 计算机的 WinUI 桌面应用程序中使用 NavigationView。从 NavigationView 中选择的下划线 i 应覆盖整个文本,但事实并非如此。这是一个设计错误,还是

回答 1 投票 0

关闭 RecognizesAccessKey 的 WPF DataGrid

我有一个非常基本的 WPF 应用程序,并附有 MS SQL 服务器作为数据源。我的数据网格声明如下: 我有一个非常基本的 WPF 应用程序,并附有 MS SQL 服务器作为数据源。我的数据网格声明如下: <DataGrid HorizontalAlignment="Left" Margin="10,88,0,0" VerticalAlignment="Top" Height="456" Width="1018" ItemsSource="{Binding}" /> 当我运行应用程序时,我看到数据从数据库加载到网格中,但列标题看起来很奇怪。每个最初包含下划线的标题都删除了该下划线:some_title 变为 sometitle。 我发现这是因为下划线被识别为控制符号,将下一个符号变成助记符。 如何禁用此行为? 我发现如果你将单下划线加倍,即 some__title 而不是 some_title,则可以绕过此行为。但由于我的数据源是外部数据库,我无法影响它。或者也许用转换器? 我认为最好的方法是将属性RecognizesAccessKey转为false,但不幸的是它无法访问。 我是 WPF 新手,感谢您的帮助! 附注她是史努比的照片(如果有帮助的话) 编辑:我的目标框架是.net 4.5 尽管这是一个老问题,但我找到了解决方案。它可能对某人有帮助。 <DataGrid HorizontalAlignment="Left" Margin="10,88,0,0" VerticalAlignment="Top" Height="456" Width="1018" ItemsSource="{Binding}" > <DataGrid.ColumnHeaderStyle> <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="DataGridColumnHeader"> <Border> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="False" /> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </DataGrid.ColumnHeaderStyle> </DataGrid> 我能想到的最佳解决方案是拦截 DataGrid 事件 AutoGeneratingColumn 并将所有下划线替换为两个下划线,如下所示: private void DataGrid_AutoGeneratingColumn_1(object sender, DataGridAutoGeneratingColumnEventArgs e) { string header = e.Column.Header.ToString(); // Replace all underscores with two underscores, to prevent AccessKey handling e.Column.Header = header.Replace("_", "__"); } 根据我的理解,(遗憾的是)不可能在不重新定义整个控制模板的情况下覆盖底层 RecognizesAccessKey 的 ContentPresenter 的值。 请参阅 msdn 论坛上的此主题:如何在标签上设置 RecognizesAccessKey 而不影响其他参数?. 您可以使用自定义列,当您使用自定义列时,您可以根据需要定义列标题。 要添加到已接受的答案中,如果您想保留数据网格的原始样式,请按如下所示操作,并将 ContentPresenter 的 RecognizeAccessKey 更改为 False。 <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> <Grid> <Themes:DataGridHeaderBorder BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" IsClickable="{TemplateBinding CanUserSort}" IsPressed="{TemplateBinding IsPressed}" IsHovered="{TemplateBinding IsMouseOver}" Padding="{TemplateBinding Padding}" SortDirection="{TemplateBinding SortDirection}" SeparatorBrush="{TemplateBinding SeparatorBrush}" SeparatorVisibility="{TemplateBinding SeparatorVisibility}"> <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="False" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </Themes:DataGridHeaderBorder> <Thumb x:Name="PART_LeftHeaderGripper" HorizontalAlignment="Left"> <Thumb.Style> <Style TargetType="{x:Type Thumb}"> <Setter Property="Width" Value="8"/> <Setter Property="Background" Value="Transparent"/> <Setter Property="Cursor" Value="SizeWE"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"/> </ControlTemplate> </Setter.Value> </Setter> </Style> </Thumb.Style> </Thumb> <Thumb x:Name="PART_RightHeaderGripper" HorizontalAlignment="Right"> <Thumb.Style> <Style TargetType="{x:Type Thumb}"> <Setter Property="Width" Value="8"/> <Setter Property="Background" Value="Transparent"/> <Setter Property="Cursor" Value="SizeWE"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Thumb}"> <Border Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"/> </ControlTemplate> </Setter.Value> </Setter> </Style> </Thumb.Style> </Thumb> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> 通过 XAML,您可以更改 DataGridColumnHeader 行为以禁用将“_”解释为特殊字符(以便保留它): <DataGrid.Resources> <Style TargetType="{x:Type DataGridColumnHeader}"> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate > <TextBlock Text="{Binding}" /> </DataTemplate> </Setter.Value> </Setter> </Style> </DataGrid.Resources>

回答 5 投票 0

如何向 Maui xaml 实体元素添加装饰后缀?

我想将装饰后缀添加到我的毛伊岛条目,如“测试”所示,这怎么可能?

回答 1 投票 0

WinUI 3:如何在更改选择时折叠导航菜单项

使用WinUI 3 当选择更改为另一个菜单项时,有什么方法可以折叠导航菜单项吗? 我尝试在“选择更改”事件中迭代菜单的所有选项,...

回答 1 投票 0

Winui3:如何在更改选择时折叠导航菜单项

使用WinUI3 当选择更改为另一个菜单项时,有什么方法可以折叠导航菜单项吗? 我尝试在“选择更改”事件中迭代菜单的所有选项,...

回答 1 投票 0

如何让DataGrid列背景透明?

我希望在 WPF 应用程序中的 DataGrid 中有一个具有透明背景的列。标题和单元格本身需要透明,但其中的内容不透明,这将是......

回答 1 投票 0

在 XAML 中将参数传递给资源控件

我将一个按钮定义为 ControlTemplate 中的资源,以便能够多次使用它。 ...

回答 1 投票 0

如何在XAML中无限播放GIF?

我的问题是,在我的代码中,GIF 播放一次然后就卡住了。我已经尝试了各种方法来解决这个问题,但不幸的是没有任何帮助。 我尝试停止它,然后将其设置为 positio...

回答 1 投票 0

AvaloniaUI:无法在 UserControl 中嵌入 VideoView 控件 (LibVlcSharp)

我是 AvaloniaUI 0.10.5 的新手。目前我正在 macOS 上的应用程序中使用 VideoView 控件 (LibVLCSharp.Avalonia 3.5.0)。该代码是 Donadren 示例 2 的副本: (https://github.com/dona...

回答 2 投票 0

为什么我在“边框”中看不到图像?

我正在 XAML 文件中制作图例,并使用边框来显示它的外观。我有三个这样的对象: 我正在 XAML 文件中制作图例,并使用 Border 来显示它的外观。我有三个这样的对象: <Border x:Name="box_Interior_PalletGroup_Color" Height="20" Width="20" Grid.Row="1" Grid.Column="0"> <Border.BorderBrush> <ImageBrush ImageSource="/Product.Customer.Client;component/Views/views/All_Colours.png" /> </Border.BorderBrush> </Border> <Border x:Name="box_Interior_Brown" Height="20" Width="20" Grid.Row="2" Grid.Column="0" Background="Brown"/> <Border x:Name="box_Interior_Transparant" Height="20" Width="20" Grid.Row="3" Grid.Column="0"> <Border.BorderBrush> <ImageBrush ImageSource="/Product.Customer.Client;component/Views/views/Transparant.png" /> </Border.BorderBrush> </Border> 图像 All_Colours.png 和 Transparant.png 已使用资源编辑器导入。 有关All_Colours.png的屏幕截图如下: 在“属性”窗口中,可以清楚地看到All_Colours.png属性中的BorderBrush,但在XAML中,什么也没有。 我应该怎么做才能在我的 XAML 设计中看到上述文件 All_Colours.png 和 Transparant.png? 顺便说一句,我的“Transparant.png”文件如下所示(白色和灰色方块的混合): 如果有人有更好的方法来显示一些“透明”,请随时告诉我。 提前致谢 我建议不要使用图像来实现透明度,而是使用路径。它只是更好地扩展: <Grid Height="200" Width="200"> <Grid.Background> <VisualBrush TileMode="Tile" Viewport="0,0,20,20" ViewportUnits="Absolute"> <VisualBrush.Visual> <Canvas Background="White"> <Path Data="M0,0 L10,0 10,10 0,10Z M10,10 L20,10 20,20 10,20Z" Fill="gray"/> </Canvas> </VisualBrush.Visual> </VisualBrush> </Grid.Background> </Grid>

回答 1 投票 0

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