2

時々、WPF が WTF に変わります =)

MSDN から:

FrameworkElement.Loaded イベント 要素がレイアウトされ、レンダリングされ、操作の準備ができたときに発生します。

オブジェクト の有効期間イベント Loaded イベントは、最終的なレンダリングの前に発生しますが、レイアウト システムがレンダリングに必要なすべての値を計算した後で発生します。

すべてのバインディングが適用された後、コード ビハインドでウィンドウ画面の位置を調整する必要があります。現在、これは Loaded イベント ハンドラーで行われます。ウィンドウがどのようにジャンプするかがわかりましたが、目にはあまり心地よくありません。

アップデート1

private void DialogViewLoaded(object sender, RoutedEventArgs e)
        {
            MaxHeight = SystemParameters.FullPrimaryScreenHeight * 0.8;
            MaxWidth = SystemParameters.FullPrimaryScreenWidth * 0.8;
            SizeToContent = SizeToContent.WidthAndHeight;
            SizeToContent = SizeToContent.Manual;
            MaxHeight = double.PositiveInfinity;
            MaxWidth = double.PositiveInfinity;

            WindowHelper.CenterWindowOnScreen(this);
        }

このコードは、私が XAML で実装したかった機能を実装しています。 柔軟な XAML のみのレイアウト。出来ますか?

4

2 に答える 2

1
    public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        CompositionTarget.Rendering += new EventHandler(OnRendering); 
    }
    void OnRendering(object sender, EventArgs e)
    {
        MaxHeight = SystemParameters.FullPrimaryScreenHeight * 0.8;
        MaxWidth = SystemParameters.FullPrimaryScreenWidth * 0.8;
        SizeToContent = SizeToContent.WidthAndHeight;
        SizeToContent = SizeToContent.Manual;
        MaxHeight = double.PositiveInfinity;
        MaxWidth = double.PositiveInfinity;
    }
}

CompositionTarget.Rendering 構成ツリー内のオブジェクトがレンダリングされる直前に発生します。これが役立つことを願っています。

于 2012-10-11T15:06:46.700 に答える
0

ウィンドウ内のホストである UserControl から DesiredSize.Height と DesiredSize.Width を使用できます。高さと幅は、ロードされたイベントの前にわかっています。

于 2015-01-07T11:00:13.997 に答える