我的页面上有一个带有此 XAML 的按钮: 我的页面上有一个带有此 XAML 的按钮: <Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Bottom" Width="50" Height="50" HorizontalContentAlignment="Left" BorderBrush="{x:Null}" Foreground="{x:Null}" Margin="50,0,0,0"> <Button.Style> <Style TargetType="Button"> <Setter Property="Background" Value="Green"/> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Red"/> </Trigger> </Style.Triggers> </Style> </Button.Style> </Button> 当我将鼠标光标放在按钮上时,按钮的背景更改为默认的 Windows 灰色背景。有什么问题吗? 这是鼠标悬停前后的按钮图片: 之前: 之后: 要删除 MouseOver 上的默认 Button 行为,您需要修改 ControlTemplate。将 Style 定义更改为以下内容应该可以解决问题: <Style TargetType="{x:Type Button}"> <Setter Property="Background" Value="Green"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Border Background="{TemplateBinding Background}" BorderBrush="Black" BorderThickness="1"> <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> </Border> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Red"/> </Trigger> </Style.Triggers> </Style> 编辑:虽然晚了几年,但您实际上可以将边框画笔设置在其中的边框内部。我不知道是否有人指出了这一点,但似乎并非如此...... 到目前为止,所有答案都涉及用其他东西完全替换默认按钮行为。但是,恕我直言,了解可以通过编辑 XAML 元素的现有默认模板来更改仅您关心的部分是有用且重要的。 在处理 WPF 按钮上的悬停效果的情况下,WPF Button 元素中的外观变化是由 Trigger 的默认样式中的 Button 引起的,该样式基于 IsMouseOver 属性并设置顶级的 Background 和 BorderBrush 属性控件模板中的 Border 元素。 Button 元素的背景位于 Border 元素背景下方,因此更改 Button.Background 属性不会阻止看到悬停效果。 通过一些努力,您可以使用自己的 setter 覆盖此行为,但由于您需要影响的元素位于模板中,并且无法在您自己的 XAML 中直接访问,因此该方法将很困难,而且恕我直言过于复杂。 另一种选择是使用图形作为 Content 的 Button 而不是 Background。如果您需要图形上的其他内容,可以将它们与 Grid 组合起来作为内容中的顶级对象。 但是,如果您只是想完全禁用悬停效果(而不仅仅是隐藏它),则可以使用 Visual Studio XAML 设计器: 编辑 XAML 时,选择 “设计” 选项卡。 在“设计”选项卡中,找到您要禁用该效果的按钮。 右键单击该按钮,然后选择“编辑模板/编辑副本...”。在出现的提示中选择要放置新模板资源的位置。这看起来什么也没做,但事实上,设计器将在您指定的位置添加新资源,并更改按钮元素以引用使用这些资源作为按钮模板的样式。 现在,您可以编辑该样式。最简单的方法是删除或注释掉(例如 Ctrl+E、C)<Trigger Property="IsMouseOver" Value="true">...</Trigger> 元素。当然,此时您可以对模板进行任何更改。 完成后,按钮样式将如下所示: <p:Style x:Key="FocusVisual"> <Setter Property="Control.Template"> <Setter.Value> <ControlTemplate> <Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/> </ControlTemplate> </Setter.Value> </Setter> </p:Style> <SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/> <SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/> <SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/> <SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/> <SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/> <SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/> <SolidColorBrush x:Key="Button.Disabled.Background" Color="#FFF4F4F4"/> <SolidColorBrush x:Key="Button.Disabled.Border" Color="#FFADB2B5"/> <SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#FF838383"/> <p:Style x:Key="ButtonStyle1" TargetType="{x:Type Button}"> <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/> <Setter Property="Background" Value="{StaticResource Button.Static.Background}"/> <Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/> <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Padding" Value="1"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"> <ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsDefaulted" Value="true"> <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> </Trigger> <!--<Trigger Property="IsMouseOver" Value="true"> <Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/> <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/> </Trigger>--> <Trigger Property="IsPressed" Value="true"> <Setter Property="Background" TargetName="border" Value="{StaticResource Button.Pressed.Background}"/> <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/> </Trigger> <Trigger Property="IsEnabled" Value="false"> <Setter Property="Background" TargetName="border" Value="{StaticResource Button.Disabled.Background}"/> <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Disabled.Border}"/> <Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </p:Style> (注意:您可以在实际代码中省略 p: XML 命名空间限定…我在这里提供它们只是因为 Stack Overflow XML 代码格式化程序会被没有 XML 完全限定名称的 <Style/> 元素混淆命名空间。) 如果您想对其他按钮应用相同的样式,只需右键单击它们并选择“编辑模板/应用资源”,然后选择刚刚为第一个按钮添加的样式。您甚至可以使用将默认样式应用于 XAML 中的元素的常规技术,将该样式设置为所有按钮的默认样式。 这对我来说效果很好。 按钮样式 <Style x:Key="TransparentStyle" TargetType="{x:Type Button}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Border> <Border.Style> <Style TargetType="{x:Type Border}"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="DarkGoldenrod"/> </Trigger> </Style.Triggers> </Style> </Border.Style> <Grid Background="Transparent"> <ContentPresenter></ContentPresenter> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> 按钮 <Button Style="{StaticResource TransparentStyle}" VerticalAlignment="Top" HorizontalAlignment="Right" Width="25" Height="25" Command="{Binding CloseWindow}"> <Button.Content > <Grid Margin="0 0 0 0"> <Path Data="M0,7 L10,17 M0,17 L10,7" Stroke="Blue" StrokeThickness="2" HorizontalAlignment="Center" Stretch="None" /> </Grid> </Button.Content> </Button> 注释 该按钮显示一个蓝色的小十字,很像用于关闭窗口的十字。 通过将网格的背景设置为“透明”,它会添加一个命中测试,这意味着如果鼠标位于按钮上的任何位置,那么它将起作用。省略此标签,只有当鼠标位于图标中的一条矢量线上方时,按钮才会亮起(这不太有用)。 只想分享我一直在使用的 ResourceDictionary 中的按钮样式。 您可以在样式触发器上自由更改 onHover 背景。 “ColorAnimation To = *您想要的背景(即#FFCEF7A0)”。按钮 BG 也会在 mouseOver 状态后自动恢复到原来的 BG。您甚至可以设置过渡的速度。 资源词典 <Style x:Key="Flat_Button" TargetType="{x:Type Button}"> <Setter Property="Width" Value="100"/> <Setter Property="Height" Value="50"/> <Setter Property="Margin" Value="2"/> <Setter Property="FontFamily" Value="Arial Narrow"/> <Setter Property="FontSize" Value="12px"/> <Setter Property="FontWeight" Value="Bold"/> <Setter Property="Cursor" Value="Hand"/> <Setter Property="Foreground"> <Setter.Value> <SolidColorBrush Opacity="1" Color="White"/> </Setter.Value> </Setter> <Setter Property="Background" > <Setter.Value> <SolidColorBrush Opacity="1" Color="#28C2FF" /> </Setter.Value> </Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Border x:Name="border" SnapsToDevicePixels="True" BorderThickness="1" Padding="4,2" BorderBrush="Gray" CornerRadius="3" Background="{TemplateBinding Background}"> <Grid> <ContentPresenter Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" RecognizesAccessKey="True" /> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Trigger.EnterActions> <BeginStoryboard> <Storyboard> <ColorAnimation To="#D2F898" Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)" FillBehavior="HoldEnd" Duration="0:0:0.25" AutoReverse="False" RepeatBehavior="1x"/> </Storyboard> </BeginStoryboard> </Trigger.EnterActions> <Trigger.ExitActions> <BeginStoryboard> <Storyboard> <ColorAnimation Storyboard.TargetProperty="(Control.Background).(SolidColorBrush.Color)" FillBehavior="HoldEnd" Duration="0:0:0.25" AutoReverse="False" RepeatBehavior="1x"/> </Storyboard> </BeginStoryboard> </Trigger.ExitActions> </Trigger> </Style.Triggers> </Style> 您所要做的就是调用样式。 实施示例 <Button Style="{StaticResource Flat_Button}" Height="Auto"Width="Auto"> <StackPanel> <TextBlock Text="SAVE" FontFamily="Arial" FontSize="10.667"/> </StackPanel> </Button> 稍微困难一点的答案,使用ControlTemplate并具有动画效果 (改编自https://learn.microsoft.com/en-us/dotnet/framework/wpf/controls/customizing-the-appearance-of-an-existing-control) 在资源字典中为按钮定义一个控件模板,如下所示: <ControlTemplate TargetType="Button" x:Key="testButtonTemplate2"> <Border Name="RootElement"> <Border.Background> <SolidColorBrush x:Name="BorderBrush" Color="Black"/> </Border.Background> <Grid Margin="4" > <Grid.Background> <SolidColorBrush x:Name="ButtonBackground" Color="Aquamarine"/> </Grid.Background> <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="4,5,4,4"/> </Grid> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="Normal"/> <VisualState x:Name="MouseOver"> <Storyboard> <ColorAnimation Storyboard.TargetName="ButtonBackground" Storyboard.TargetProperty="Color" To="Red"/> </Storyboard> </VisualState> <VisualState x:Name="Pressed"> <Storyboard> <ColorAnimation Storyboard.TargetName="ButtonBackground" Storyboard.TargetProperty="Color" To="Red"/> </Storyboard> </VisualState> </VisualStateGroup> </VisualStateManager.VisualStateGroups> </Border> </ControlTemplate> 在您的 XAML 中,您可以将上面的模板用于您的按钮,如下所示: 定义您的按钮 <Button Template="{StaticResource testButtonTemplate2}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White">My button</Button> 希望有帮助 用于更改按钮样式 第一:定义资源样式 <Window.Resources> <Style x:Key="OvergroundIn" TargetType="Button"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Grid Background="#FF16832F"> <ContentPresenter TextBlock.Foreground="White" TextBlock.TextAlignment="Center" Margin="0,8,0,0" ></ContentPresenter> </Grid> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Grid Background="#FF06731F"> <ContentPresenter TextBlock.Foreground="White" TextBlock.TextAlignment="Center" Margin="0,8,0,0" ></ContentPresenter> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Trigger> </Style.Triggers> </Style> <Style x:Key="OvergroundOut" TargetType="Button"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Grid Background="#FFF35E5E"> <ContentPresenter TextBlock.Foreground="White" TextBlock.TextAlignment="Center" Margin="0,8,0,0" ></ContentPresenter> </Grid> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Grid Background="#FFE34E4E"> <ContentPresenter TextBlock.Foreground="White" TextBlock.TextAlignment="Center" Margin="0,8,0,0" ></ContentPresenter> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Trigger> </Style.Triggers> </Style> </Window.Resources> 第二个定义按钮代码 <Border Grid.Column="2" BorderBrush="LightGray" BorderThickness="2" CornerRadius="3" Margin="2,2,2,2" > <Button Name="btnFichar" BorderThickness="0" Click="BtnFichar_Click"> <Button.Content> <Grid> <TextBlock Margin="0,7,0,7" TextAlignment="Center">Fichar</TextBlock> </Grid> </Button.Content> </Button> </Border> 第三个代码 public void ShowStatus() { switch (((MainDto)this.DataContext).State) { case State.IN: this.btnFichar.BorderBrush = new SolidColorBrush(Color.FromRgb(243, 94, 94)); this.btnFichar.Style = Resources["OvergroundIn"] as Style; this.btnFichar.Content = "Fichar Salida"; break; case State.OUT: this.btnFichar.BorderBrush = new SolidColorBrush(Color.FromRgb(76, 106, 83)); this.btnFichar.Style = Resources["OvergroundOut"] as Style; this.btnFichar.Content = "Fichar Entrada"; break; } }
我有四个用户控件,我尝试将值从用户控件传递到另一个用户控件,这些用户控件存在于同一个用户控件中。 这个 xml 主页面 ` 我有四个用户控件,我尝试将值从用户控件传递到另一个用户控件,这些用户控件存在于同一个用户控件中。 这个 xml 主页面 ` <Grid> <StackPanel Background="#FFF"> <local:mwidget x:Name="mwidget" Loaded="UserControl1_Loaded"/> <local:addemploy x:Name="addemploy" Visibility="Hidden"/> <local:editemploy x:Name="editemploy" Visibility="Hidden" /> </StackPanel> </Grid>` 还有这个代码 ` private void UserControl1_Loaded(object sender, RoutedEventArgs e) { mwidget.ShowUserControl2Requested += OnShowUserControl2Requested; addemploy.ShowUserControl1Requested += OnShowUserControl1Requested; editemploy.ShowUserControl1Requestedd += ShowUserControl1Requestedd; mwidget.ShowUserControl2Requestedd += ShowUserControl1Requesteddd; } private void OnShowUserControl2Requested(object sender, EventArgs e) { addemploy.Visibility = Visibility.Visible; mwidget.Visibility = Visibility.Collapsed; } private void OnShowUserControl1Requested(object sender, EventArgs e) { mwidget.Visibility = Visibility.Visible; addemploy.Visibility = Visibility.Collapsed; } private void ShowUserControl1Requestedd(object sender, EventArgs e) { mwidget.Visibility = Visibility.Visible; editemploy.Visibility = Visibility.Collapsed; } private void ShowUserControl1Requesteddd(object sender, EventArgs e) { editemploy.Visibility = Visibility.Visible; mwidget.Visibility = Visibility.Collapsed; }` 这个代码mwidget ` public partial class mwidget : UserControl { public event EventHandler ShowUserControl2Requested; public event EventHandler ShowUserControl2Requestedd; public mwidget() { InitializeComponent(); } private void add_employ(object sender, RoutedEventArgs e) { ShowUserControl2Requested?.Invoke(this, EventArgs.Empty); } private void edit_employ(object sender, System.Windows.RoutedEventArgs e) { ShowUserControl2Requestedd?.Invoke(this, EventArgs.Empty); } }` 所以我想将值从 mwidget 传递到 editemploy,我尝试了一些解决方案,但不起作用 您需要在 mwidget 和 editemploy 中创建 DependencyPropertys 并将它们相互绑定。 (注意:在下面的示例中,我使用了 OneWayToSource。这可以防止 editemploy 更改 mwidget 中的值。如果您不想这样做,请将其更改为 TwoWay。) m小部件: public static readonly DependencyProperty MyValueProperty = DependencyProperty.Register( nameof(MyValue), typeof(bool), typeof(mwidget)); public bool MyValue { get => (bool)GetValue(MyValueProperty); set => SetValue(MyValueProperty, value); } 编辑雇佣: public static readonly DependencyProperty MyPassedValueProperty = DependencyProperty.Register( nameof(MyPassedValue), typeof(bool), typeof(editemploy)); public bool MyPassedValue { get => (bool)GetValue(MyPassedValueProperty); set => SetValue(MyPassedValueProperty, value); } xaml: <local:mwidget x:Name="mwidget" Loaded="UserControl1_Loaded"/> <local:addemploy x:Name="addemploy" Visibility="Hidden"/> <local:editemploy x:Name="editemploy" Visibility="Hidden" MyPassedValue="{Binding ElementName=mwidget, Path=MyValue, Mode=OneWayToSource}" />
如果我想在 WPF 中创建自己的属性网格控件,我该从哪里开始寻找?
我想创建 wpf 倒数计时器,将结果显示为 hh:mm:ss 到文本框中,我将感谢任何人的帮助。
如何在 WPF 应用程序中生成 FlowDocument 的“打印预览”?
我的各种WPF应用程序显示FlowDocument。我可以使用打印 WPF FlowDocument 的答案中描述的方法来打印它们。 现在我想添加一个“打印预览”
列的 maxWidth 无法使用 ag-grid 中的 autoAutoSize 函数调整大小
我正在尝试将 autosizecolumns 功能与 AG-Grid 和 Angular 框架一起应用。当函数执行时,列将默认采用内容的宽度。因此我为
React 中 Tailwind 动态类值编译的问题[重复]
我目前在尝试基于 Tailwind CSS 中动态生成的网格大小变量创建网格时遇到问题。当我使用变量设置 grid-template-rows 和 grid-template-co...
我正在研究是否可以通过工具的帮助或以尽可能有效的方式将 WPF 应用程序迁移到 Blazor Hybrid。我需要迁移的应用程序是一个较旧的 WPF 应用程序,它...
我一直在论坛上寻找解决这个问题的方法,我能找到的最接近的就是这个。但似乎没有解决办法。 我有一个 CSS 网格,它是 grid-template-columns: Repeat(auto-fill,...
在 Angular 15 升级中遇到加载器解析 ag-grid/angular.css 文件的问题
我在将 Angular 14 升级到 15 时遇到此构建错误。 我尝试添加 css 加载器,但没有用 ./node_modules/@ag-grid-community/styles/ag-grid.css?ngGlobalStyle:1:0 - 错误:模块解析失败...
ag-grid - 导出到 Excel/CSV 时定义自定义列标题值
我在我的应用程序中使用ag-grid,在网格顶部我提供了2个按钮“下载Excel”和“下载CSV”,当用户单击任何按钮时网格中的数据应该是
如何在 WindowStyle=None 的情况下删除 WPF 窗口顶部的白色条带?
是否可以在 Window Style=None 的情况下删除 WPF 窗口顶部的白色条带。 XAML 和 Window 如屏幕截图所示:
在 MUI Data Grid v6 中更新另一个单元格时,如何在编辑模式下更新一个单元格?
我正在使用 MUI Data Grid v6 组件并利用其内置的 CRUD 编辑功能。我有多个列,所有列都可以编辑。在我的“类别&...”列中选择新值后
我正在使用 C# 开发一个 WPF 项目,我需要在不同的类之间传递数据(特别是 ID)。我的设置包括一个 MainWindow、一个 PatientTemplate(一个 ResourceDictionary)和一个
ChromeDriver 在 WPF 应用程序中启动方式不同
如果我运行控制台项目,它会在当前版本上运行 启动 ChromeDriver 120.0.6099.109 但如果我的项目类型是 WPF,则: 启动 ChromeDriver 85.0.4183.87 我收到了e的消息...
该列的字段是带有时间的日期,因此当使用仅日期值进行过滤时,找不到任何内容。 我尝试了 [AG-Grid][1] 中的示例 但它根本不过滤。 有什么建议吗?我用AG-...
我的 WPF 应用程序需要一个 PropertyGrid。经过大量搜索后我发现了这一点。 当我将 PropertyGrid 添加到表单并运行它时,我已经添加了程序集(exe 文件),但我在其中看不到它...
如何在 Syncfusion Grid 中过滤时禁用自动完成功能 我试过这个: 动作开始(参数){ if (args.requestType === '过滤' && args.currentFilterObject.value == null) { ...
我需要排列 4 个层叠的 div,看起来像是 4 列。 这是我的html结构(我无法修改它) 1111 我需要排列 4 个层叠的 div,看起来像是 4 列。 这是我的html结构(我无法修改它) <div class="col1"> 1111 <div class="col2"> 2222 <div class="col3"> 3333 <div class="col4"> 4444 </div> </div> </div> </div> 我需要它在使用时看起来像: display: grid; grid-template-columns: repeat(4, minmax(200px, 1fr)); 我也尝试过 grid-template-areas 但没有达到预期的结果。 好的,所以您需要容器是网格容器,然后元素都属于相同的子级别(即它们都需要属于相同的子元素)。因此你需要重构你的 html 来解决这个问题。这里有一个有用的链接,可以帮助您快速了解如何使用 css 网格。话虽如此,这里有一个 html/css 示例演示了您想要实现的目标。希望这可以帮助您有一个良好的开端。请注意,此示例使用您的值,并将强制每列至少为 200 像素(您显然可以根据您的用例进行更改)。 .grid-container{ display: grid; grid-template-columns: repeat(4, minmax(200px, 1fr)); } <div class="grid-container"> <div class="col1"> 1111 </div> <div class="col2"> 2222 </div> <div class="col3"> 3333 </div> <div class="col4"> 4444 </div> </div>
WPF - 部署问题 - 错误模块名称:KERNELBASE.dll
我正在尝试安装并运行我的第一个 WPF 应用程序,但遇到了一些问题。我已经构建了一个安装项目,一切似乎都安装正确,我所有的第三方 dll 都已复制
Material UI OutlinedInput 标签不可见
我们正在使用 Material UI 中的 OutlinedInput,但文本标签不会呈现。如何解决这个问题? 从 '@material-ui/core' 导入 { Grid, OutlinedInput }; 我们正在使用 Material UI 中的 OutlinedInput,但文本标签不会渲染。如何解决这个问题? import { Grid, OutlinedInput } from '@material-ui/core'; <Grid container> <Grid item xs={12}> <OutlinedInput label="invisible label" placeholder="HELLO, STACKOVERFLOW!" value={value} onChange={(e) => handleValueChange(e.target.value)} fullWidth /> </Grid> </Grid> 渲染的是一个空白区域(左上角),而不是预期的“不可见标签”文本: 就像 @Daniel L 提到的,你必须在 InputLabel 组件中使用 FormControl 组件,但除了他的答案之外 - 我还必须在我的 label 组件上添加 OutlinedInput 属性,以便轮廓输入不会与我的标签重叠。 不带label属性的代码: <FormControl sx={{ m: 1, width: '25ch' }} variant="outlined"> <InputLabel htmlFor='display-name'>Display Name</InputLabel> <OutlinedInput id="display-name" value={displayName} onChange={(e) => handleInputChange(e)} aria-describedby="base-name-helper-text" inputProps={{ 'aria-label': 'weight', }} /> </FormControl> 带有标签属性的代码: <FormControl sx={{ m: 1, width: '25ch' }} variant="outlined"> <InputLabel htmlFor='display-name'>Display Name</InputLabel> <OutlinedInput id="display-name" value={displayName} label='Display Name' onChange={(e) => handleInputChange(e)} aria-describedby="base-name-helper-text" inputProps={{ 'aria-label': 'weight', }} /> </FormControl> 对此问题的快速回答基本上是将组件包装在 FormControl 下,并在 InputLabel 组件顶部添加 OutlinedInput。 根据您的代码,它应该如下所示: <Grid container> <Grid item xs={12}> <FormControl> <InputLabel htmlFor="outlined-adornment">Some text</InputLabel> <OutlinedInput id="outlined-adornment" placeholder="HELLO, STACKOVERFLOW!" value={value} onChange={(e) => handleValueChange(e.target.value)} fullWidth /> </FormControl> </Grid> </Grid> 我认为这个组件不适合单独使用。在 MUI 文档中,它主要用作其他组件的增强,例如 TextField <TextField id="outlined-basic" label="Outlined" variant="outlined" /> 如果您检查开发工具中的样式,看起来 CSS 属性 visibility: hidden 导致了此问题。事实上,如果您删除该样式,您将看到该标签有效。 但是,如果您已经使用此组件构建了大部分应用程序并且需要显示该标签,只需使用 MUI 的样式解决方案(例如 makeStyles)覆盖它即可。另外,使用 notched prop 为其分配空间 const useStyles = makeStyles({ customInputLabel: { "& legend": { visibility: "visible" } } }); export default function App() { const classes = useStyles(); return ( <div className="App"> <Grid container> <Grid item xs={12}> <OutlinedInput classes={{ notchedOutline: classes.customInputLabel }} label="visible label" placeholder="HELLO, STACKOVERFLOW!" fullWidth notched /> </Grid> </Grid> </div> ); } 我遇到了同样的问题,我将 OutlinedInput 包装到 FormControl 元素中,并附加 InputLabe 组件作为标签,这解决了我的问题。 要点: 方向:“ltr”确保标签文本对于从左到右的语言正确对齐。 &.MuiFormLabel-root:not(.MuiFormLabel-filled):not(.Mui-focused) 等规则可让您定位不同状态下的标签。 确保应用 ThemeProvider 来包装您的应用程序或特定组件以应用这些样式。 const const theme = createTheme({ MuiInputLabel:{ defaultProps:{}, styleOverrides:{ root:{ direction:"ltr", width:"100%", textAlign:"end", fontSize:20, "&.MuiFormLabel-root:not(.MuiFormLabel-filled):not(.Muifocused)":{color:'pink'}, "&.Mui-focused":{left:30,top:-10}, "&.MuiFormLabel-filled:not(.Mui-focused)":{left:30, top:-6} }, }, },
在 WPF 中,当我尝试使用 CTRL+TAB 切换选项卡时,它可以正常工作,但是如果选项卡位于父选项卡内,那么它将切换到子选项卡,只需要移动父选项卡? 我已经尝试过...
使用 gs_startnode 和 gs_joincluster 手动运行 GridDB 时,我一直遇到错误使用集群名称的问题。我修复了 /var/lib/gridstore/conf 和 /usr/grid 中的 gs_cluster.json...
无法在从 WPF 应用程序使用的 WCF 应用程序中调用 ApplyClientBehavior 方法
无法点击ApplyClientBehavior方法 使用 System.ServiceModel.Description; 命名空间 Utils.CMSAuth { 公共类 AuthorizationHeaderEndpointBehavior :IEndpointBehavior { 公开
我生成一个数据网格并希望将内容居中。 这是我的代码: DataGrid 表 = new DataGrid(); tabelle.ItemsSource = dt.DefaultView; 表格.RowHeight = 50; tabelle.VerticalContentAlig...
我正在与 Ag-Grid 企业合作并使用 rowModelType 作为服务器端 我只想显示组行上第二列和第三列的一些自定义值(以红线标记)。 我有检查...
为什么 File.ReadAllLinesAsync() 会阻塞 UI 线程?
这是我的代码。读取文件行的 WPF 按钮的事件处理程序: private async void Button_OnClick(对象发送者, RoutedEventArgs e) { Button.Content = "正在加载..."; 变种
Selenium Grid 未检测到 Docker yaml 文件中的集成
我正在尝试为我的投资组合构建一个自动化测试项目。但我面临着同样的问题。我创建了一个 Docker YAML 文件来编写配置以在 chrome 和
我正在使用 MUI X Data Grid v5 和 Tanstack React Query v4 我正在尝试在我的 Datagrid 组件上使用分页,当页面最初加载时,它会按预期正常获取并加载网格。
我正在使用 powershell 和 wpf 构建一个 GUI。我想在工具运行时更改按钮的内容。但当其他命令完成后它就发生了变化。我尝试启动
我在 WPF 应用程序中使用 LookUpEdit 控件。 它非常适合搜索按字母顺序排列的所有项目,并将 FilterCondition 设置为“包含”。 我可以更新一些吗...
我有两个切换按钮,我正在尝试组合它们 - 有点。所以第一个按钮根据 IsChecked 是 true 还是 false 来切换图像,但是这个按钮周围有一个边框......
我已经为WPF编写了一个热键控件,并且想要向用户显示友好的名称。为此,我使用 GetKeyNameText。 然而,例如当使用 Key.MediaNextTrack 作为输入时,GetKeyNameText 重新...
我创建了一个包含 5 个字段的自定义表格: MANDT:数据元素 MANDT VBELN:数据元素 VBELN_VA POSNR:数据元素 POSNR_VA EXT_ID:自定义数据元素 VALUE:自定义数据元素 我已经定义了
我想使用 C# 连接到我的 Basler ace acA1440-73gm 相机。 我将在 .NET7.0 中的 WPF 应用程序中使用它。 要下载哪些 Nuget 包以及如何连接到相机? 我已经安装了...
在代码隐藏中绑定到 DataTable 时,DataGrid 会部分更新
我有一个 WPF 窗口,其中有一个 DataGrid 作为其子窗口之一。 DataGrid 中的列数仅在运行时确定。以下是我的 window.xaml 文件中 DataGrid 的代码: <
我们希望使用 Microsoft UX 指南中描述的气球消息。我发现一些示例使用 Windows 窗体中的本机代码,但本机代码需要组合的句柄...
我有一个 WPF 应用程序(MVVM Toolkit),其数据模型是使用数据库中的 EFcore 工具搭建的。一个特定类的最终模型如下所示: 公共部分B类...
如果父级 <a> 具有特定类,如何使用 JavaScript 将 <span> 标签的文本用 <div> 括起来
我有以下代码 我有以下代码 <div class="team-grid"> <div class="cssgrid-wrapper"> <div class="cssgrid-container"> <div class="tmb"> <div class="t-inside "> <div class="t-entry-text"> <div class="t-entry-text-tc"> <div class="t-entry"> <p class="t-entry-meta"> <span class="t-entry-category t-entry-tax"> <a href="#">Category one</a> </span> </p> </div> </div> </div> </div> </div> </div> <div class="tmb"> <div class="t-inside "> <div class="t-entry-text"> <div class="t-entry-text-tc"> <div class="t-entry"> <p class="t-entry-meta"> <span class="t-entry-category t-entry-tax"> <a href="#">Category two</a> </span> </p> </div> </div> </div> </div> </div> </div> </div> 并且我想使用javascript将每个A标签的文本包含在具有“hide”类的SPAN中,如果a标签具有具有“team-grid”类的祖父母DIV和具有“t-entry”类的父SPAN -类别'。 所以在上面的例子中结果将是 <div class="team-grid"> <div class="cssgrid-wrapper"> <div class="cssgrid-container"> <div class="tmb"> <div class="t-inside "> <div class="t-entry-text"> <div class="t-entry-text-tc"> <div class="t-entry"> <p class="t-entry-meta"> <span class="t-entry-category t-entry-tax"> <a href="#"><span class="hide">Category one</span></a> </span> </p> </div> </div> </div> </div> </div> </div> <div class="tmb"> <div class="t-inside "> <div class="t-entry-text"> <div class="t-entry-text-tc"> <div class="t-entry"> <p class="t-entry-meta"> <span class="t-entry-category t-entry-tax"> <a href="#"><span class="hide">Category two</span></a> </span> </p> </div> </div> </div> </div> </div> </div> </div> 如有任何帮助,我们将不胜感激。 document.querySelectorAll('.team-grid .t-entry-category > a').forEach(a => { a.innerHTML = `<span class="hide">${a.textContent}</span>`; });
无法加载DLL“找不到模块HRESULT:0x8007007E”
我有 C# WPF 应用程序,其中使用了 C++ DLL 库。当我构建项目时,它会成功构建,并且所有 DLL 和 exe 都存储在 bin/(Platform) eg(bin/Debug) 文件夹中。 现在如果我...
我正在尝试更新文本框以显示 3-2-1,然后播放声音。这有点有效,但我的声音立即开始播放,因为线程没有阻塞主线程。我试过了...
使用 mage.exe 自动进行扩展验证 (EV) 代码签名
我尝试使用金雅拓存储在 HSM 上的 EV 证书来签署 WPF ClickOnce 应用程序。我配置了持续部署 (CD),并且希望无需用户交互即可自动签名,...
使用WPF + XAML Syncfusion.SfGrid.WPF组合表格中单元格的问题
我有一个问题3天都无法处理。听起来很简单,但事实上却复杂得多。我有一个应用程序,可以从 Excel 文件中获取数据并存储它...
我将在wpf应用程序中使用webview2进行视频聊天。 但是,由于 webview2 是异步运行的,因此即使窗口关闭,它也会识别出用户没有离开服务器。 我只是...
我有一个文本框和一个标签。单击按钮后,我执行以下代码: 标签1.内容=文本框1.文本; 我的问题是,如何启用标签的文本换行?可能还有...
我有一个WPF应用程序,它使用Log4Net来记录各种信息。该应用程序运行良好,所有内容都按其应有的方式记录。但是,当滚动浏览“输出”窗口时,我
自定义 ListViewItem 控件显示类名称,而常规 ListView 控件显示实际数据
以下是 WPF 应用程序的代码片段,其中我使用 ListView 控件和自定义 ListView 控件,但在 UI 中自定义 ListView 控件显示类名称,其中为 List View
我有一个对象列表,每个对象都包含用户定义的属性。这些属性的键和值是自由字符串,因此它们在对象之间不一定一致。无论如何,我
Ninjatrader:想要在指标中使用箭头键,但父控件(图表)可以控制它们
这是 C#、WPF(不是 winform)、Ninjatrader 8 (我也会在 Ninja 论坛上发帖,但 Ninja 技术支持会告诉我不支持) Ninjatrader 保留向上/向下箭头键用于非必要...
System.Text.Json.JsonException:'JSON 值无法转换为 System.Collections.Generic.List`1
我正在尝试构建一个 WPF 应用程序以将假日详细信息存储在 SQL Server 数据库中。我向最终用户请求地址并尝试对地址进行地理编码。为此,我发出一个网络请求...