3


here on MSDN で説明されているように、コントロールの 1 つの幅プロパティをqualifiedDouble に設定しようとしています。
(「XAML 値」セクションまでスクロールして、qualifiedDouble の使用に関する MSDN の情報を参照してください)

ただし、XAML ではなくコード ビハインドでこれを実現する方法を知りたいです。私が作成している UserControls には、継承のために XAML が添付されていません。そのため、C# でできることは何でも使用して、すべての XAML 操作を手動で実行する必要があります。

コードビハインドでqualifiedDoubleがどのように達成されるか知っている人はいますか?

4

1 に答える 1

6

なんて偶然だろう、私は今日早くこれをしなければならなかった。修飾された double は、与えられた単位に基づいて因数変換されますが、LengthConverter.

LengthConverter lc = new LengthConverter();
string qualifiedDouble = "10pt";

double converted = lc.ConvertFrom( qualifiedDouble );

代わりの:

double original = 10.0;
double converted = original * 1.333333333; // px-to-pt conversion

これにより、たとえば、「10pt」が 13.3333333 に変換されます。この記事で提供されている変換係数を使用することもできますが、係数はクラスに組み込まれているため、上記を使用することをお勧めします。

編集済み:文字列に関するコメントに応えて...

文字列変換は、意図されたものにとって完全に理にかなっています。彼らが XAML を使用するのは、C# や VB よりも XAML で何かを表現する方がはるかに簡単だからです。XAML では、すべての値が文字列であるためTypeConverter、文字列をターゲットの型に変換するために s が自動的に選択されます。FontSizeConverterたとえば、 の内部静的メソッドを呼び出しますLengthConverter。(代わりにインスタンス化することもできます。) "4*"のような s や "Auto" のようなs のFontSizeConverterコンバーターもあります。または、私が言ったように、独自のクラスを作成して、文字列なしで変換することもできます。GridLengthWidth

この記事では、コード ビハインドで要素を直接使用することを推奨しているため、上記の別の例を示しました。

于 2009-08-14T18:08:44.430 に答える