[解決済み] コードでマージンのプロパティを設定する
2023-06-01 21:33:16
質問
MyControl.Margin.Left = 10;
エラーです。
System.Windows.FrameworkElement.Margin' は変数ではないので、戻り値を変更できません。
どのように解決するのですか?
問題は
Margin
はプロパティであり、その型 (
Thickness
) は値型です。つまり、このプロパティにアクセスしたときには
コピー
を取得することになります。
たとえ、あなたが
ができる
の値を変更しても
Thickness.Left
プロパティの値を変更しても、マージンは変更されません。
代わりに、あなたは
Margin
プロパティに新しい値を設定する必要があります。たとえば (偶然にも Marc が書いたのと同じコードです)。
Thickness margin = MyControl.Margin;
margin.Left = 10;
MyControl.Margin = margin;
ライブラリの設計のためのメモとして、私は、もし
Thickness
が immutable でありながら、元の値のコピーである新しい値を返すメソッドを備えていたら、非常に良かったと思います。そうすれば、書くことができます。
MyControl.Margin = MyControl.Margin.WithLeft(10);
ミュータブルな値型の奇妙な振る舞いを心配する必要はなく、素晴らしく読みやすい、すべて1つの式です...。
関連
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み] enumを列挙するには
-
[解決済み] 複数の例外を一度にキャッチする?
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] C#がforeachで変数を再利用するのは理由があるのか?
-
[解決済み] Try-catchは私のコードをスピードアップさせるか?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み] 2つのリストを結合する