我正在开发一个使用 PropertyGrid 的业务应用程序。我的项目负责人希望我在运行时本地化 PropertyGrid 中的文本。欢呼!!!讽刺
我已经尝试了很多天来本地化 PropertyGrid。但我在运行时更改属性描述和类别时遇到问题。更改DisplayName效果很好。
我做了一个简单的示例来重现该问题:创建一个Windows 窗体应用程序,并从工具箱中添加一个PropertyGrid和一个具有默认设置的按钮。
这是我想在 PropertyGrid 中显示的类:
class Person
{
int age;
public Person()
{
age = 10;
}
[Description("Person's age"), DisplayName("Age"), Category("Fact")]
public int Age
{
get { return age; }
}
}
Run Code Online (Sandbox Code Playgroud)
在表单的构造函数中;我创建 Person 对象并将其显示在 PropertyGrid 中。
public Form1()
{
InitializeComponent();
propertyGrid1.SelectedObject = new Person();
}
Run Code Online (Sandbox Code Playgroud)
该按钮用于在运行时更改 DisplayName、Description 和 Category 属性。
private void button1_Click(object sender, EventArgs e)
{
SetDisplayName(); …
Run Code Online (Sandbox Code Playgroud) 在我的 WPF 应用程序中,针对 .NET Core 3.1,我尝试使用内置的System.Windows.Controls.BoolToVisibilityConverter
我想我已经查找了 XAML 参考的正确语法。
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
Run Code Online (Sandbox Code Playgroud)
但是我得到一个编译错误:
'System.Windows.Controls' was not found. Verify that you are not missing an assembly reference. Also, verify that your project and all referenced assemblies have been built.
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
我有一个WPF应用程序,MainWindow类有<Window.CommandBindings>
,<Window.InputBindings>
所以我可以检测CTRL+ X,CTRL+ C和CTRL+ V命令.
MainWindow包含一个DataGrid,我想在其中选择一行并使用CTRL+ C命令复制行中的数据.在DataGrid中选择行时,在MainWindow中不再检测到CTRL+ C命令.仍然检测到CTRL+ X和CTRL+ V.
我用一个非常简单的例子设法重现了这个问题.只需复制并粘贴下面的代码,就可以随时编译并运行.然后执行以下操作:
MainWindow.XAML代码
<!-- Commands for hot keys -->
<Window.CommandBindings>
<!-- Source -->
<!-- http://stackoverflow.com/questions/4682915/defining-menuitem-shortcuts -->
<CommandBinding Command="Cut" Executed="btnCut_Click" />
<CommandBinding …
Run Code Online (Sandbox Code Playgroud)