問題タブ [propertygrid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - デフォルトのコレクションエディターやカスタムUIEditorで、プロパティのセットアクセサーを呼び出すことはできますか?
プログラムのネイティブオブジェクトに属性を付けるカスタムクラスがあるアプリケーション用のプラグインを作成しています。APIを使用すると、ネイティブファイル内のオブジェクトとの間でキー付き文字列を直接読み書きできます。したがって、各プロパティのGetおよびSetアクセサーのプライベートフィールドを読み書きするのではなく、プログラム内のネイティブオブジェクトとの間でこれらのユーザー文字列を読み書きしています。
ユーザーは、PropertyGridコントロールを介してこれらのプロパティにアクセスします。これまでのところ、これは単純なプロパティですべて正常に機能していますが、カスタムオブジェクトタイプ(Floor )のカスタムコレクション( FloorCollection )を保存する必要があります。
そこで、 XmlSerializerを使用してプロパティを設定しました。GETアクセサーは、ネイティブオブジェクトからユーザー文字列を読み取り、文字列はFloorCollectionのインスタンスに逆シリアル化されます。SETアクセサーは、FloorCollectionのインスタンスを読み取り、それをユーザー文字列にシリアル化することにより、逆の処理を行います。
私の物件は次のようになります。
このコレクションプロパティは、デフォルトのコレクションエディタのPropertGridから開くことができます。ただし、デフォルトのコレクションエディターは、SETアクセサーを呼び出してオブジェクトに保存するのではなく、GETアクセサーによって提供された参照でのみコレクションを編集します。したがって、デフォルトのエディターでコレクションを編集できますが、エディターを閉じて再度開いても、SETアクセサーが呼び出されてコレクションがネイティブオブジェクトのユーザー文字列にシリアル化されることはないため、コレクションは変更されません。
プロパティのセットアクセサーを呼び出すようにデフォルトのコレクションエディターを変更できますか?プロパティのカスタムUITypeEditorを設定した場合、プロパティセットアクセサーを使用してプロパティに保存し直す方法はありますか?または、コレクションプロパティにアクセスしているコードに、参照ではなく値でプロパティをGETおよびSETするように強制する他の方法はありますか?
wpf - PropertyGrid コントロールの WPF "マジック"
私は WPF について学ぶために趣味のプロジェクトを開始しました。私の研究では、この WPF PropertyGrid http://www.codeplex.com/wpgに出くわしました。
http://wpg.codeplex.com/SourceControl/ListDownloadableCommits.aspxからソースをダウンロードし、 ブラウジングを開始し、クールに見え、動作します。しかし、私の人生では、それがどのように機能するのかわかりません。次の質問は、一見したところ残っているものです。
- オブジェクトが持つプロパティをどのように知るのでしょうか?
- 値を編集するコントロールをどのようにレンダリングしますか?
- レンダリングするコントロールをどのように決定しますか? (プロパティのメタデータの説明を推測しています)
DependancyProperties が新しい値間のデータ交換を処理することを理解しています。
- すべての魔法を実行する XAML または CodeBehind コードはどこにありますか?
Default.xaml ファイルには多くの XAML コードがありますが、私が知る限り、そこに定義されているのはスタイルと外観だけです。
propertygrid - PropertyDescriptorsをオーバーライドするのではなく、クラスに追加するにはどうすればよいですか?
ICustomTypeDescriptorを実装するクラスがある場合は、 GetProperties()メソッドをオーバーライドして、クラスのすべてのプロパティをカスタムPropertyDescriptorsに完全に置き換えることができます。
しかし、クラスの既存のプロパティを保持し、クラスに追加のプロパティを追加したい場合はどうなりますか?既存のクラスプロパティに追加されるカスタムプロパティ記述子のセットを返す方法はありますか?
たとえば、プロパティグリッドに表示されるカスタムプロパティをユーザーがプログラムで定義できるようにしたいとします。カスタムプロパティの値はDictionary(文字列キー、オブジェクト値)コレクションに格納されます。また、キー値に基づいてこのコレクションから値を読み書きするPropertyDescriptorsを追加したいと思います。
IExtenderProviderは、あるクラスのプロパティを別のクラスに追加するだけなので、機能しないと思います。ただし、実行時にプロパティを動的に追加および削除できる必要があります。ICustomTypeDescriptorも実装するIExtenderProviderクラスを使用して、追加するプロパティを実行時に把握できるようにすることはできますか?
c# - .NET プロパティ グリッド - App.config を使用して Browsable (bool) を設定する
App.config を使用して、プロパティ グリッドでプロパティの可視性を設定できるようにしたいと考えています。私が試してみました :
[Browsable(bool.Parse(Sytem.Configuration.ConfigurationSettings.AppSettings["testBool"]))]
ただし、Visual Studio 2008 では、「属性引数は定数式、typeof 式、または属性パラメーター型の配列作成式である必要があります」というエラーが表示されます。App.config でこの bool を設定する方法はありますか?
.net - PropertyGrid の TypeDescriptor を使用してプロパティ レベルの属性を動的に追加する
グリッドに表示しながら動的に属性 (Browsable(false) など) を追加したい。シナリオは、いくつかのパブリック プロパティを持つカスタム クラスがあることです。ただし、すべてのパブリック プロパティを UI に表示する必要はありません。抜け道はありますか?
TypeDescriptor を使ってみました。ただし、これはタイプ レベルでのみ機能し、プロパティ レベルでは機能しません。プロパティレベルでの使用方法に関するヘルプが見つかりませんでした。
どんな指針も高く評価されます。
winforms - WinFormsプロパティグリッドでの配列プロパティの表示形式
string[]プロパティを持つオブジェクトがあります。これをPropertyGridのSelectedObjectとして割り当てると、そのプロパティに対して「String[]配列」が表示されます。
この表示部分を別のものに変更する方法はありますか?
jquery - jQuery のプロパティ グリッド
次のようなプロパティ グリッドを作成したい: Ext JS Property Grid デモ
ただし、extjs を使用したくないので、代わりに jQuery を使用しています。プロパティ グリッドを作成するのに最も簡単に使用できるプラグインはどれですか?
jqGrid は、私が現在知っている唯一のものです。 http://www.trirand.com/blog/
XML ファイルまたはデータベースからデータをロードすることに興味はありません。ページ上のオブジェクトからデータを設定できるはずです。
編集:同じ名前の別のプラグインがあることに気付きました:http: //jqframework.com/jqgrid/
名前空間に失敗しました。
c# - PropertyGrid のカスタム プロパティ名?
で使用するクラスがありPropertyGrid
ます。各プロパティを設定CategoryAttribute
すると、明らかに、各アイテムの新しいカテゴリが作成されることがわかりました。これにより、カスタム名が含まれる各項目に [+] が含まれるようにプロパティ グリッドが設定されますが、これは私が達成しようとしている動作ではありません。
Visual Studio では、ソリューション エクスプローラーでアイテム (アセンブリなど) をクリックすると、ツリー ノードがなく、完全に名前が付けられたプロパティのリストだけが表示されます。つまり、オブジェクトの名前だけでなく、任意の文字列でプロパティを識別できます。したがって、これを使用する代わりに:
[+ ファイル パス] ファイルパス
| propertyValue
[+ ファイル サイズ]
FileSize | 0キロバイト
私はこれを探しています:
[+ ファイル]
ファイル パス | value
ファイル サイズ | 0キロバイト
または、最初の [+] ノードのない上記でも。該当する属性を探して System.ComponentModel 名前空間を調べましたが、見つかりません。
どうすればこの効果を達成できますか? それは可能でなければなりません.Visual Studioはそれを行います.それらは同じコンポーネントであり、派生および拡張されたものではないと思います.
c# - PropertyGrid-動的に変化するReadOnlyAttribute
ため息、別のPropertyGridの質問。実際に避けられない問題にぶつかるまでは、これを回避できると思いました。
TreeViewから選択したオブジェクトに応じて、読み取り専用にする必要がある場合と変更可能にする必要がある場合があるブールプロパティがあります。
私の質問は、プロパティのReadOnlyAttributeを動的に変更するにはどうすればよいですか?明らかに、ブール変数を作成してから、ReadOnlyAttribute(boolVar)のように設定しようとしても機能せず、今ではアイデアがありません。
私が考えることができる唯一の解決策は、このプロパティが書き込み可能で、読み取り専用のアイテムに対して、ほぼ同一のクラスを別々に作成することですが、これは私には少し不誠実に思えます。
ヘルプ?:)
c# - Object-Instance-Model を PropertyGrid に実装する
XML 構成ファイルのフロントエンドとなる GUI アプリケーションを構築しています。
XML 構造は、一連のオブジェクト インスタンスを定義します。つまり、使用するアプリケーション (Windows サービス) でインスタンス化する必要がある型名とプロパティ値です。
したがって、次の 3 つのレイヤーがあります。
はConfigurationObject
、Windows サービスの適切な XML 形式にシリアル化されます。これらComponentObjects
は、Windows サービスで使用されるタイプと同じです。
私が抱えている問題は、3 つのレイヤーすべてを同期させる最善の方法を決定することです。
私の最初の実装では、変更されたときに個々のプロパティを更新しました。ただし、複雑なオブジェクトをUIに更新する必要がある場合、このアプローチはうまく機能しませんでした(ただし、問題が何であるかはわかっていると思います)
私の現在のアプローチには、 TypeConverters を使用してConfigurationObject
と の間で変換することが含まれます。ComponentObjects
これは、現在のロジックが を無視していることに気付くまでうまく機能します(に変換するときにすべてのプロパティをBrowseableAttribute
単純に反復するため)ComponentObject
ConfigurationObject
したがって、現在のアプローチに時間を費やす前に、自分が正しい方向に進んでいることを確認したいと思います. より簡単なアプローチはありますか?そのような状況で使用できるモデル/デザインパターンはありますか?
ありがとう、カール