wpf 相关问题

Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。

启动第二个应用程序的 WPF 应用程序不会在第二个应用程序中显示 XAML 工具栏

我正在开发一个 WPF 应用程序,它有一个“启动器”应用程序,可以实例化在自己的窗口中运行的其他 WPF 应用程序。我打开了运行时 XAML 工具栏,它在 &

回答 1 投票 0

获取画布面板WPF MVVM的中心坐标

我想在画布中间用mvvm图案画一个形状。 在后面的代码中,我通过使用 ActualWidth 和 ActualHeight 属性达到了中间点。 但我做起来有困难

回答 1 投票 0

在 MVVM Community Toolkit VM 中我加载了一个 Person(带有 20 个可观察的 props),在 VI 中我显示了 Person 的数据。如何在任何数据更改时启用“保存按钮”?

我有一个模型 公共部分类 Patient : GenericEntity { [可观察属性] 私有 int 性别 ID; [可观察属性] [NotifyPropertyChangedFor(nameof(Crucials))] 私人

回答 2 投票 0

在WPF自定义扩展元素中扩展内部元素

我正在使用 Xceed WPF Toolkit DateTimePicker 在一个元素中同时包含日期和时间: 我正在使用 Xceed WPF Toolkit DateTimePicker 在一个元素中同时包含日期和时间: <xctk:DateTimePicker x:Name="DTCalendar" Margin="10,10,10,0" VerticalAlignment="Top" ValueChanged="DTCalendar_ValueChanged" Width="234" Height="34" Format="Custom" FormatString="dd ddd yyyy, HH:mm" FontSize="14" FontWeight="Bold" HorizontalContentAlignment="Center"></xctk:DateTimePicker> 但是,我的问题是 TimePicker 下拉列表的高度太短: https://i.imgur.com/nham5JG.png 有没有办法在不编辑底层源的情况下将其高度扩展到最大? 您应该能够使用隐式 MaxDropDownHeight 设置 TimePicker 元素的 Style 属性: <xctk:DateTimePicker x:Name="DTCalendar" Margin="10,10,10,0" VerticalAlignment="Top" ValueChanged="DTCalendar_ValueChanged" Width="234" Height="34" Format="Custom" FormatString="dd ddd yyyy, HH:mm" FontSize="14" FontWeight="Bold" HorizontalContentAlignment="Center"> <xctk:DateTimePicker.Resources> <Style TargetType="xctk:TimePicker"> <Setter Property="MaxDropDownHeight" Value="1000" /> </Style> </xctk:DateTimePicker.Resources> </xctk:DateTimePicker>

回答 1 投票 0

WPF中背景颜色不同时,如何用一种颜色突出显示列表框中文本的某些部分?

我有这些函数可以研究突出显示列表框中的文本。它有效,但现在我正在努力解决将突出显示文本的某个部分的部分。例如,当您有&...

回答 1 投票 0

根据 WPF 中的组合框选择动态更新复选框状态

假设我有一个最小的 WPF 应用程序,如下所示: 我的代码由以下类组成: MainWindow,包含以下属性的视图: 列表 选择 字符串 Ch...

回答 1 投票 0

WPF 旋转图像不需要 ClipToBounds

我有一个旭日图像,我正在尝试在窗口中旋转。我让它旋转得很好,但图像是一个大正方形,因此它填充了窗口的比例。然而,当它旋转时,图像...

回答 1 投票 0

如何在WPF C#中获取dataGrid中单元格的大小和位置

我已经开始在 WPF 中使用 dataGrid,但是来自 WinForm,它与我习惯的有点不同.. 我现在的问题是我需要获取特定单元格的矩形(这样我就可以

回答 2 投票 0

DataGrid 上下文菜单未正确绑定

我有一个 DataGrid,我试图向其中添加带有命令绑定的 ContextMenu。 ContextMenu 的定义如下: 我有一个 DataGrid,我试图向其中添加一个带有命令绑定的 ContextMenu。 ContextMenu 的定义如下: <DataGrid Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="4" Name="DgResults" Margin="10, 25, 10,10" AutoGenerateColumns="False"> <DataGrid.ContextMenu> <ContextMenu> <MenuItem Command="{Binding GenerateDutyCycleCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" Header="Generate DC"></MenuItem> </ContextMenu> </DataGrid.ContextMenu> </DataGrid> 在 Window 的代码隐藏中,我定义了命令属性: private ICommand? _command; public ICommand GenerateDutyCycleCommand { get { var m = 0; return _command ??= new CommandHandler(GenerateDutyCycle, CanExecute); } } public void GenerateDutyCycle() { MessageBox.Show("Command Executed"); var selectedItem = DgResults.SelectedItem; var p = 0; } public bool CanExecute() { return Results.Count > 0; } 在 XAML 中,如果我右键单击 GenerateDutyCycleCommand 并选择 转到定义,它会按预期转到属性,所以似乎一切都是正确的。 当我运行代码时,总是显示 ContextMenu 并且永远不会命中 CanExecute 方法。同样,如果我单击菜单项,则永远不会点击 GenerateDutyCycle 方法(或显示消息框)。我尝试了几次修改(例如,将 DataContext 的 MenuItem 设置为 Window),但没有成功。 我在运行时还看到存在 XAML 绑定失败,其中指出 找不到源:RelativeSource FindAncestor、AncestorType='System.Windows.Window'、AncestorLevel='1'。我不清楚为什么这个绑定会失败,如果它可以识别定义(通过Go To Definition)。 任何帮助/指导将不胜感激。短暂性脑缺血发作。 更新:我能够通过从ContextMenu中删除DataGrid定义并添加样式(到Window.Resources)来使这个部分工作,如下所示: <Style TargetType="{x:Type DataGridRow}"> <Setter Property="Tag" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=DataContext}"/> <Setter Property="ContextMenu"> <Setter.Value> <ContextMenu DataContext="{Binding PlacementTarget.Tag, RelativeSource={RelativeSource Self}}"> <MenuItem Command="{Binding GenerateDutyCycleCommand}" Header="Generate DC"></MenuItem> </ContextMenu> </Setter.Value> </Setter> </Style> 使用这种样式,当 DataGrid 中没有结果时,ContextMenu 不会显示。但是, CanExecute 和 GenerateDutyCycle 方法中的断点仍然没有被命中。另外,当有结果并单击菜单项时,不会显示 MessageBox。 我设法通过添加 ContextMenu 作为 DataGrid 的资源,然后将其分配在行的样式中,如下所示找到解决方案: <DataGrid.Resources> <ContextMenu x:Key="CtxDataGrid"> <ContextMenu.Items> <MenuItem Header="Generate DC" Command="{Binding GenerateDutyCycleCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" CommandParameter="{Binding SelectedItem, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}"/> </ContextMenu.Items> </ContextMenu> </DataGrid.Resources> <DataGrid.RowStyle> <Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}"> <Setter Property="ContextMenu" Value="{StaticResource CtxDataGrid}" /> </Style> </DataGrid.RowStyle>

回答 1 投票 0

如果应用程序以管理员身份运行,则不会调用App.xaml.cs OnActivated()

如果应用程序以管理员身份运行并且被用户锁定,则单击任务栏中的图标时,不会调用 OnActivated(EventArgs e)。 受保护的覆盖无效 OnActi...

回答 1 投票 0

查找 WPF 数据网格中行的高度

有人可以建议我如何做到这一点吗? 我努力了 dtgMain.RowHeight; 但这总是返回 NAN。

回答 5 投票 0

WPF - 创建一个可以将其内容包装到特定形状的 ListView

是否可以创建一个可以将其内容包装为特定形状而不是矩形的listView?因此,当其内容触及边框时,它可以转到下一行 我尝试的是通过

回答 1 投票 0

在视图模型和视图之间使用 MVVM 进行 Wpf 数据上下文绑定

我刚刚开始学习 MVVM,这似乎是基本问题,但我花了一整天的时间试图弄清楚它。 我有一个解决方案,其中包含 3 个项目,一个用于 Model,一个用于 ViewModel ...

回答 3 投票 0

BattleShips 动态创建按钮并添加绑定

所以,我正在为网格动态创建按钮。我有两个窗口 - 一个用于一名玩家,第二个用于第二名玩家。我想使用数据绑定将每个播放器按钮切换到第二个

回答 1 投票 0

ObservableCollection 元素的自动换行

如标题所示,我正在尝试实现 ObservableCollection 项目的自动包装,目前我正在使用 CollectionChanged 事件来执行此操作,其中我检查元素是否为所需类型,如果不是,我...

回答 1 投票 0

如何向DataGrid添加一行以立即显示?

单击 DataGrid 中的按钮后,我尝试在 C# WPF MVVM 中添加另一行。问题是,一旦我单击其他位置(例如在文本框中),就会添加该行。这意味着达...

回答 1 投票 0

UI 输入元素与数据库表实体的平等

如下图所示,我的应用程序的用户界面在卖家和买家部分共有 12 个文本框(每个部分 6 个文本框)。 下图是 ERD 的一部分

回答 1 投票 0

如何设置垂直 WPF WrapPanel 以使用尽可能多的列

我有一个 ItemsControl,其中 WrapPanel 作为 ItemsPanel。 ItemsControl 位于 ScrollViewer 内部。 根据窗口的宽度,ItemsControl/WrapPanel 应具有更多列以制作更多...

回答 3 投票 0

如何在一个 XAML 中组合 StackPanel 和 Grid

我有一个 UserControl,其中包含(在主网格内)一个带有边距的 StackPanel,它在我的 UserControl 内创建一个矩形,这非常简单: 我有一个UserControl,其中包含(在主Grid内)一个带有边距的StackPanel,它在我的UserControl内创建一个矩形,这非常简单: <Grid Name="mainGrid" HorizontalAlignment="Center" VerticalAlignment="Top" > <StackPanel Orientation="Vertical" Margin="15"> 结果: 我知道将UserControl“拆分”在不同的部分非常容易(因为我想在UserControl的下部添加一个上下文菜单): <Grid Name="mainGrid" HorizontalAlignment="Center" VerticalAlignment="Top" > <Grid> <Grid.RowDefinitions> <RowDefinition Height="0.77*"></RowDefinition> <RowDefinition Height="0.23*"></RowDefinition> </Grid.RowDefinitions> </Grid> 结果: 现在我想将两者结合起来:我希望我的UserControl同时包含StackPanel和Grid,但这似乎并不那么简单: <Grid Name="mainGrid" HorizontalAlignment="Center" VerticalAlignment="Top" > <Grid> <Grid.RowDefinitions> <RowDefinition Height="0.77*"></RowDefinition> <RowDefinition Height="0.23*"></RowDefinition> </Grid.RowDefinitions> </Grid> <StackPanel Orientation="Vertical" Margin="15"> 预期结果: 实际结果是错误消息: XLS0509 Property elements cannot be in the middle of an element's content. They must be before or after the content. 我该如何解决这个问题? 提前致谢 我只能从你发布的 xaml 中猜测你做错了什么。 我怀疑您在网格之外和用户控制标签内有一些东西。我无法复制该特定错误。但我可以让它发挥作用。 这对我来说效果很好: <UserControl x:Class="WpfApp7.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WpfApp7" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> <Grid Name="mainGrid" HorizontalAlignment="Center" VerticalAlignment="Top" > <Grid> <Grid.RowDefinitions> <RowDefinition Height="0.77*"></RowDefinition> <RowDefinition Height="0.23*"></RowDefinition> </Grid.RowDefinitions> </Grid> <StackPanel Orientation="Vertical" Margin="15"> <Rectangle Fill="Red" Height="20" Width="20"/> </StackPanel> </Grid> </UserControl>

回答 1 投票 0

如何使用MVVM模式或caliburn micro清除PasswordBox值

输入错误时如何清除密码框值?我看到过一些答案,例如“将密码框发送到视图模型”,但这只是破坏了 MVVM 模式。当前的xaml 输入错误时如何清除密码框值?我看到过一些答案,例如“将密码框发送到视图模型”,但这只是破坏了 MVVM 模式。 当前 xaml <PasswordBox x:Name="PasswordInput" Style="{DynamicResource PWbox}" cal:Message.Attach="[Event PasswordChanged] = [Action PasswordChanged($source)]" Grid.Row="3" Grid.Column="2"/> 视图模型 public void PasswordChanged(PasswordBox source) { OldPassword = source.Password; } private string _oldPassword; public string OldPassword { get { return _oldPassword; } set { _oldPassword = value; NotifyOfPropertyChange(() => OldPassword); } } 我发现你可以通过切换绑定的 IsEnabled 值并使用来欺骗它 private void PasswordBox_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) { if (sender is PasswordBox passwordBox && e.NewValue is bool newValue && !newValue) { passwordBox.Clear(); } }

回答 1 投票 0

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