上部に「取得または設定...」と表示されているのに、なぜ変更させないのですか?
3 に答える
Margin.Left
getまたはsetsですが、変数のように使用されないため、これを行うことはできません。のようにPadding
。
お気づきかもしれませんが、Margin
(に関してはPadding
)はプロパティでThickness
あり、その値です。だから、あなたが言うとき
label1.Margin.Left = MainGrid.ActualHeight / 2 - label1.ActualHeight / 2;
構造体()を返すため、コピー(Margin
)のみを編集しています。そのため、エラーが発生します。コピーであるため、変更は保存されません。Margin
Thickness
基本的に、の値を特定の値に変更することはできますが、オブジェクトプロパティをObject.Margin.Left
保存/変更することはできないため、エラーが発生します。Margin
例えば
言えない
label1.Margin.Left = MainGrid.ActualHeight / 2 - label1.ActualHeight /2;
しかし、私たちは言うことができます
Thickness NewThickness = new Thickness(); //Initialize a new Thicnkess
NewThickness.Left = MainGrid.ActualHeight / 2 - label1.ActualHeight /2; //Set the left property of NewThickness
label1.Margin = NewThickness; //Apply the changes to label1
つまり、はプロパティであるため、直接Margin
変更することはできません。Thickness
Margin
または、オブジェクトの設定が簡単だと思う次のものを使用することもできます
label1.Margin = new Thickness(double left, double top, double right, double bottom);
ありがとう、
これがお役に立てば幸いです:)
WPF Marginプロパティにはすべての引数が必須のようですが、一度に1つまたは2つのプロパティ値だけを変更したい場合があります...
Google検索では、JavaとASP.netで、4つの値すべてが設定されたmarginプロパティを使用して見ました。
ただし、この例では、ユーザーはLabel.Margin.Left値を取得できます... http://forums.asp.net/t/1834713.aspx/1
ここでのポイントは、一時的なstruct
値内のプロパティに割り当てることは、永続的な効果がないため、意味がないということです。
System.Windows.Thicknessは、struct
であり、マージンの値のlabel1.Margin
コピーです。sは値で渡されるため、これはコピーです。のコピーでの値のみを変更するため、に割り当てる意味はありません。Thickness
label1
struct
label1.Margin.Left
Left
label1.Margin
代わりにできることは次のとおりです。
Thickness t = label1.Margin;
t.Left = ......; // assign your value here
label1.Margin = t;
CS1612エラーについては、MSDNページも参照してください。
Margin
のプロパティを取得または設定できるため、ツールチップには「取得または設定...」と表示されますが、特定のケースでは、のプロパティにlabel1
割り当てる意味はありません。Left
label1.Margin