4

私の WPF アプリケーションには 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;
        }

表示されない理由を教えてください

4

4 に答える 4

17

これが古い投稿であることは知っていますが、ブロックに新しいPropertyGridがあり、最も機能的で機能が豊富なものです。ああ、それは無料です!

http://wpftoolkit.codeplex.com/

ここに画像の説明を入力してください

于 2011-10-25T18:30:09.660 に答える
7

これは、WPFPropertyGrid コードのバグによるものです。

彼の ThemeInfoAttribute から、そのコードの作成者は一般的なテーマを使用するつもりだったようですが、彼は誤ってリソースを "Themes/generic.xaml" ではなく "Themes/default.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 辞書をアプリまたはウィンドウ辞書として設定できます。

すてきな一日を!

于 2009-11-02T15:54:36.783 に答える
-3

ダウンロードページのドキュメントは読みましたか?

WPF プロパティ グリッドのダウンロード ページ

たとえば、次のように、編集するプロパティを参照する必要があるようです。

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