2016-05-11 38 views
0

私は、WPF(Height = "Auto" Width = "Auto")の自動サイズアプリケーションユーザーコントロールを持っています。その中の要素の束がサイズ変更されると、ウィンドウは同じレンダリングされたサイズのままです。どのようにサイズを変更するのですか?私はウィンドウ内のコンポーネントのサイズを変更する関数でこの行Application.Current.MainWindow.SizeToContent = SizeToContent.WidthAndHeight;を試しました。コンパイラは、この呼び出しに関連するオブジェクトがないというエラーを表示します。私はこの行MainWindowBorder.Height = Double.NaN;をサイズ変更するためにそれをしようとしました。運もない。ウィンドウのサイズを変更するにはどうすればいいですか?

+0

てみました - =あなたの要素のサイズを変更した量 – Master117

+0

あなたは間違いなくすべてのものがどれだけ変化しているかを把握し、手動でそれを行うことができます@ Master117が言及しました。コントロールの数や変更方法によっては、コードを順番に取得するのが少し面倒かもしれませんが、間違いなく機能します。 –

+0

内部のすべての要素のサイズが自動的に変更されます。私は一連のグリッドの中で崩れたり目に見える要素を作るので、面倒な計算をせずに手動でサイズを変更することはできません。ウィンドウには、これらの自動サイズ変更されたグリッドのコレクションが含まれています。 – Sean

答えて

1
+0

これをXAMLに配置することはできません。私はそれを私の読み込みページコード(MainView())の背後に置こうとしましたが、それは私にエラーを与えます:SizeToContent、の定義を含んでいません。また、上記の私の質問を読んで、私はコードの中でこれを試してきたと述べました。 – Sean

+0

あなたcan not?これは好きじゃない? <ウィンドウX:クラス= "CustomDialogSample.SettingsDialog" ResizeModeです= "CanResizeWithGrip" SizeToContent = "WidthAndHeight"> – Master117

+0

http://www.java2s.com/Tutorial/CSharp/0470__Windows-Presentation-Foundation/SizeToContentWidthAndHeight.htm – Master117

1

XAML内のすべての内部コントロールのサイズを変更できる場合が、サイズを変更する唯一の事はどのようにこの単純なアプローチについて、ウィンドウのですか?参照、現在のユーザーコントロールのウィンドウを取得するには...

int mycurrentscreenwidth = 1366; 
int mycurrentwindowwidth = 1366; 

var screen = System.Windows.Forms.Screen.PrimaryScreen.Bounds; 
var screenwidth = screen.Width; 

if (Convert.ToInt32(screenwidth) < 1366) 
{ 
    double calculate_scalefactor= Convert.ToInt32(screenwidth)/(double)mycurrentscreenwidth; 
    double newwidth_tobescaled = mycurrentwindowwidth * calculate_scalefactor; 

    this.Width = newwidth_tobescaled; 
} 
+0

usercontrolのサイズを変更する必要がありますか?同じ論理が適用されるかもしれない。 –

0

この情報がお役に立てば幸いです:

Access parent window from User Control

次に使用:あなたはwindow.height

Window yourParentWindow = Window.GetWindow(userControl); 
yourParentWindow.SizeToContent = SizeToContent.WidthAndHeight; 
関連する問題