読み取り専用の依存性プロパティを作成する方法は?
2023-11-01 05:23:26
質問
読み取り専用の依存性プロパティを作成するにはどうすればよいですか。そうするためのベストプラクティスは何ですか。
具体的に言うと、私が最も困っているのは
DependencyObject.GetValue()
を取るもので
System.Windows.DependencyPropertyKey
をパラメータとする
System.Windows.DependencyProperty.RegisterReadOnly
はDを返す。
ependencyPropertyKey
オブジェクトではなく
DependencyProperty
. では、GetValue を呼び出すことができない場合、読み取り専用の依存性プロパティにどのようにアクセスすることになるのでしょうか?あるいは
DependencyPropertyKey
を古い
DependencyProperty
オブジェクトに変換できますか?
アドバイスやコードをいただけると大変ありがたいです。
どのように解決するのですか?
簡単です、実は(via RegisterReadOnly ):
public class OwnerClass : DependencyObject // or DependencyObject inheritor
{
private static readonly DependencyPropertyKey ReadOnlyPropPropertyKey
= DependencyProperty.RegisterReadOnly(
nameof(ReadOnlyProp),
typeof(int), typeof(OwnerClass),
new FrameworkPropertyMetadata(default(int),
FrameworkPropertyMetadataOptions.None));
public static readonly DependencyProperty ReadOnlyPropProperty
= ReadOnlyPropPropertyKey.DependencyProperty;
public int ReadOnlyProp
{
get { return (int)GetValue(ReadOnlyPropProperty); }
protected set { SetValue(ReadOnlyPropPropertyKey, value); }
}
//your other code here ...
}
プライベート/プロテクト/内部コードで値を設定するときのみキーを使用します。保護されているため
ReadOnlyProp
セッターのため、これはあなたにとって透過的です。
関連
-
[解決済み】コンパイラーエラーメッセージ。コンパイラはエラーコード -532462766 で失敗しました。
-
[解決済み] アセンブリから型を読み込めなかったエラー
-
[解決済み] データテーブルの並べ替え
-
[解決済み] gacutil.exeはどこですか?
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] 埋め込みリソーステキストファイルの読み方
-
[解決済み] RelativeSourceでWPFバインディングを使用するにはどうしたらいいですか?
-
[解決済み] 読み取り専用のGUIプロパティをViewModelにプッシュバックする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] リファレンスの追加にSystem.Web.Mvcが表示されないのはなぜですか?
-
[解決済み] データテーブルがすでに別のデータセットに属している
-
[解決済み] Windowsイベントログで参照される「フレームワークのバージョン」とは何ですか?
-
[解決済み] gacutil.exeはどこですか?
-
[解決済み] 権限 '*' を持つ SSL/TLS の安全なチャネルを確立できませんでした。
-
[解決済み] .net の OOM 問題を解決する必要があります。
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] System.Timers.Timer vs System.Threading.Timer
-
[解決済み] MemoryStreamから文字列を取得する方法は?
-
[解決済み] プライベートメソッドのユニットテストはどのように行うのですか?