2011-08-18 19 views
6

私は2つのユーザコントロールがあるwpfウインドウを持っています。私はXAMLでウィンドウのMinWidthを設定し、MinHeightは2番目のusercontrolが表示されているかどうかに応じてistセットをデータバインドすることで提供されます。 Now:ランタイム中にウィンドウのサイズをMinWidth/Heightと異なる値に設定するにはどうすればよいですか? Show()、Show()の後、さまざまなイベント(Initialized、Loadedなど)の前に値を設定しようとしました。私はUpdateLayout()を使って試してみましたが、データバインディングを使ってHeight/Widthを設定しようとしました。何も動作しません!しかし、私がアプローチをデバッグすると、ウィンドウのHeight/Widthプロパティは期待値に設定されていますが、ActualHeight/Widthは維持されています。私はそれがバゲットであると思ったが、それは(私にとって)ではないことが分かった。あなたの助けをあなたのために。wpfウインドウをプログラムでC言語でサイズ変更する#

+0

これはちょっと変わったようです。ウィンドウは幅と高さの設定を尊重する必要があります。あなたはミニマルの例を投稿できますか? – Jens

+0

'Window.SizeToContent'が' Manual'以外に設定されている可能性はありますか?もしそうなら、 '幅'および/または '高さ'は 'ActualWidth'と' AcutalHeight'から事実上切り離されます。 – dlf

答えて

8

あなたは

Application.Current.MainWindow.Height = 100; 

ショート追加を設定しようとしたことがあり:私はコードで、短いテストをしました:

public partial class MainWindow : Window, INotifyPropertyChanged 
{ 

    private int _height; 
    public int CustomHeight 
    { 
     get { return _height; } 
     set 
     { 
      if (value != _height) 
      { 
       _height = value; 
       if (PropertyChanged != null) 
        PropertyChanged(this, new PropertyChangedEventArgs("CustomHeight")); 
      } 
     } 
    } 

    public MainWindow() 
    { 
     InitializeComponent(); 
     this.DataContext = this; 
     CustomHeight = 500; 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     CustomHeight = 100; 
    } 
} 

およびXAML:

<Window x:Class="WindowSizeTest.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="{Binding CustomHeight, Mode=TwoWay}" Width="525"> 
<Grid> 
    <Button Click="Button_Click">Test</Button> 


</Grid> 

ボタンをクリックすると、ウィンドウの高さ。それはあなたが探しているものですか?

1

多くの情報がありませんので、私はここで推測しています。

幅と高さの設定を尊重しないウィンドウを再現できる唯一の方法は、SizeToContentWidthAndHeightに設定したときでした。

1

誰かがまだこれで苦労している場合は、あなたがしなければならない唯一のことは、以下の通りです:

あなたは、メインウィンドウには、単に次のコードを記述サイズを変更したい場合。

Application.Current.MainWindow.Height = 420; 

メインウィンドウ以外の新しいウィンドウのサイズを変更する場合は、新しいウィンドウの.csファイルに次のコードを書きます。

Application.Current.MainWindow = this; 
Application.Current.MainWindow.Width = 420; 

希望します。

関連する問題