3

ここに画像の説明を入力してください 上部に「取得または設定...」と表示されているのに、なぜ変更させないのですか?

4

3 に答える 3

4

Margin.Leftgetまたはsetsですが、変数のように使用されないため、これを行うことはできません。のようにPadding

お気づきかもしれませんが、Margin(に関してはPadding)はプロパティでThicknessあり、その値です。だから、あなたが言うとき

label1.Margin.Left = MainGrid.ActualHeight / 2 - label1.ActualHeight / 2;

構造体()を返すため、コピーMarginのみを編集しています。そのため、エラーが発生します。コピーであるため、変更は保存されません。MarginThickness

基本的に、の値を特定の値に変更することはできますが、オブジェクトプロパティを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);

ありがとう、
これがお役に立てば幸いです:)

于 2012-10-28T05:41:19.770 に答える
0

WPF Marginプロパティにはすべての引数が必須のようですが、一度に1つまたは2つのプロパティ値だけを変更したい場合があります...

Google検索では、JavaとASP.netで、4つの値すべてが設定されたmarginプロパティを使用して見ました。

ただし、この例では、ユーザーはLabel.Margin.Left値を取得できます... http://forums.asp.net/t/1834713.aspx/1

于 2012-10-28T05:30:19.207 に答える
0

ここでのポイントは、一時的なstruct値内のプロパティに割り当てることは、永続的な効果がないため、意味がないということです。

System.Windows.Thicknessは、structであり、マージンの値のlabel1.Marginコピーです。sは値で渡されるため、これはコピーです。のコピーでの値のみを変更するため、に割り当てる意味はありません。Thicknesslabel1structlabel1.Margin.LeftLeftlabel1.Margin

代わりにできることは次のとおりです。

Thickness t = label1.Margin;
t.Left = ......; // assign your value here
label1.Margin = t;

CS1612エラーについては、MSDNページも参照してください。

Marginのプロパティを取得または設定できるため、ツールチップには「取得または設定...」と表示されますが、特定のケースでは、のプロパティにlabel1割り当てる意味はありません。Leftlabel1.Margin

于 2012-10-28T10:36:03.783 に答える