wpf 属性网格

问题描述 投票:0回答:4

我的 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;
        }

请帮我找出为什么它不可见

c# wpf propertygrid
4个回答
17
投票

我知道这是一篇旧文章,但现在有一个新的 PropertyGrid,它是功能最丰富、功能最丰富的一个。哦,它是免费的!

http://wpftoolkit.codeplex.com/

enter image description here


7
投票

这是由于 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 字典即可。

祝你有美好的一天!


1
投票

对于感兴趣的人,我已经开始了一个简单但希望有用的 WPF 免费开源 PropertyGrid 项目。

源代码可在此处获取:https://github.com/SoftFluent/SoftFluent.Windows,这里还有一个 nuget 包:https://www.nuget.org/packages/SoftFluent.Windows

它没有依赖项,但需要 .NET 4,因为它使用 WPF 的 .NET 4 DataGrid 类


-3
投票

您阅读了下载页面上的文档吗?

WPF 属性网格下载页面

似乎您必须引用要编辑的属性,例如:

<wpg:PropertyGrid Width="550" Height="550" Instance="{Binding ElementName=button}" />
<Button x:Name="button" Content="Click" />
© www.soinside.com 2019 - 2024. All rights reserved.