0

この問題について助けが必要です。

MainPage.xaml のテキスト ボックスを次のように初期化します。

<TextBox 
    x:Name="box"
    HorizontalAlignment="Left"
    TextWrapping="NoWrap"
    Text="TextBox"
    VerticalAlignment="Center"
    RenderTransformOrigin="1.332,-26.438"
    Height="23" Width="1366"
    HorizontalContentAlignment="Left">
</TextBox>

次に、MainPage.xaml.cs のマージンを次のように変更しようとします。

box.Margin = new Thickness(0,grid.Height - 23,0,0);

これは実行時エラーです

An exception of type 'System.Runtime.InteropServices.COMException'
occurred in Console.exe but was not handled in user code

Additional information: Error HRESULT E_FAIL has been returned from
a call to a COM component.

マージン変更コードとエラーを示す画像は次のとおりです: http://screencast.com/t/U7pzizHzb

4

1 に答える 1

0

これを過度に複雑にしているようです。設定している余白により、TextBox が下揃えになり、正確に 23 ピクセルの高さが強制されます。では、最初からそうしないのはなぜですか?

<TextBox ... Height="23" VerticalAlignment="Bottom" />

COM エラーの原因は 100% わかりませんが、UI フレームワークがそのような変更の準備ができていない時点で、「マージンを手動で変更する」コードが実行されていることが最初に推測されます。(WinRT はそのように非常に脆弱であることがわかりました。) したがって、コード ビハインドを削除し、XAML でレイアウトを指定すると、COM エラーが修正されるだけでなく、コードがよりシンプルで保守しやすくなります。

于 2012-09-03T02:51:36.510 に答える