4

我的 WPF 应用程序需要一个 propertyGrid。经过大量搜索后,我发现了这一点 ,当我将 propertyGrid 添加到表单并运行它时,我添加了程序集(exe 文件)并在表单中看不到它。xml代码:

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

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

4

4 回答 4

17

我知道这是一篇旧帖子,但是块上有一个新的 PropertyGrid,它是功能最丰富、功能最丰富的一个。哦,它是免费的!

http://wpftoolkit.codeplex.com/

在此处输入图像描述

于 2011-10-25T18:30:09.660 回答
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 字典。

祝你有美好的一天!

于 2009-11-02T15:54:36.783 回答
0

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

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

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

于 2015-10-22T12:06:11.140 回答
-3

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

WPF 属性网格下载页面

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

<wpg:PropertyGrid Width="550" Height="550" Instance="{Binding ElementName=button}" />
<Button x:Name="button" Content="Click" />
于 2009-11-02T13:19:11.293 回答