我的 WPF 应用程序需要一个 PropertyGrid。经过大量搜索,我找到了this。
当我将 PropertyGrid 添加到表单并运行它时,我已经添加了程序集(exe 文件),但在表单中看不到它。
XAML 代码:
<Window x:Class="propertyGridTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpg="clr-namespace:Deepforest.WPF.Controls;assembly=WPGDemo"
Title="Window1" Height="300" Width="300">
<Grid>
<Button x:Name="btn" Click="btn_Click" Height="35.5" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="55"></Button>
<wpg:PropertyGrid x:Name="property" Width="100" Height="100"> </wpg:PropertyGrid>
</Grid>
</Window>
背后代码:
private void btn_Click(object sender, RoutedEventArgs e)
{
property.Instance = btn;
}
请帮我找出为什么它不可见
我知道这是一篇旧文章,但现在有一个新的 PropertyGrid,它是功能最丰富、功能最丰富的一个。哦,它是免费的!
这是由于 WPFPropertyGrid 代码中的错误造成的。
从他的 ThemeInfoAttribute 中可以看出,该代码的作者打算使用通用主题,但他错误地将资源放在文件“Themes/default.xaml”而不是“Themes/generic.xaml”中。因此,资源不会自动加载。他通过从 App.xaml 手动加载资源来解决该错误。
当您从您的文件中引用他的 .exe 时,他的 App.xaml 未加载,因此他的解决方法未激活。
最好的解决方案是将原始代码中的文件名更正为“Themes/generic.xaml”。如果这是不可能的,第二好的解决方案是从 App.xaml 手动加载资源:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/WPGDemo;Component/Themes/Default.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
或者,如果您愿意,您可以将其放入窗口的标签中。
请注意,上述 XAML 假设将使用其他资源,因此需要合并。如果没有,您可以跳过创建单独字典和合并的步骤,而只需将 WPGDemo 字典设置为您的 App 或 Window 字典即可。
祝你有美好的一天!
对于感兴趣的人,我已经开始了一个简单但希望有用的 WPF 免费开源 PropertyGrid 项目。
源代码可在此处获取:https://github.com/SoftFluent/SoftFluent.Windows,这里还有一个 nuget 包:https://www.nuget.org/packages/SoftFluent.Windows。
它没有依赖项,但需要 .NET 4,因为它使用 WPF 的 .NET 4 DataGrid 类。
您阅读了下载页面上的文档吗?
似乎您必须引用要编辑的属性,例如:
<wpg:PropertyGrid Width="550" Height="550" Instance="{Binding ElementName=button}" />
<Button x:Name="button" Content="Click" />