Ho una finestra wpf con due controlli utente all'interno dei quali il secondo viene mostrato solo quando necessario. Ho impostato solo il MinWidth della finestra in XAML, il MinHeight è fornito tramite l'associazione dei dati e un ist in base al se viene mostrato il secondo controllo us. Ora: come posso impostare la dimensione della finestra su valori diversi da MinWidth/Height durante il runtime. Ho provato a impostare i valori prima di Show(), dopo Show(), in vari eventi (Initialized, Loaded, ecc.). Ho provato con e senza UpdateLayout(), ho provato ad impostare l'altezza/larghezza tramite il databinding. Niente funziona! Ma quando eseguo il debug degli approcci, vedo che le proprietà Height/Width della finestra sono impostate sui valori previsti, ma ActualHeight/Width restano. Ho pensato che sarebbe stata una bagatella, ma si è scoperto che non è (per me). Tuo per qualsiasi aiuto.Ridimensionamento programmato di wpf in C#
risposta
Hai provato a impostare
Application.Current.MainWindow.Height = 100;
Oltre breve: Ho appena fatto un breve test, in codice:
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;
}
}
e 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>
Fare clic sul pulsante per impostare il altezza della finestra. E 'questo quello che stai cercando?
Non hai dato molte informazioni, quindi sto solo indovinando qui.
L'unico modo per riprodurre la finestra senza rispettare le impostazioni di larghezza e altezza è stato quando ho impostato SizeToContent
su WidthAndHeight
.
se qualcuno è ancora alle prese con questo, l'unica cosa che dovete fare è il seguente:
Se si desidera ridimensionare la finestra principale basta scrivere il codice seguente.
Application.Current.MainWindow.Height = 420;
Se si desidera ridimensionare una nuova finestra diversa dalla finestra principale basta scrivere il seguente codice nel file .cs della nuova finestra.
Application.Current.MainWindow = this;
Application.Current.MainWindow.Width = 420;
Spero che sia d'aiuto.
Sembra un po 'strano. Le finestre dovrebbero rispettare le tue impostazioni per larghezza e altezza. Potresti postare un esempio minuscolo? – Jens
È possibile che 'WindowSizeToContent' sia impostato su un valore diverso da' Manual'? In tal caso, 'Width' e/o' Height' saranno disaccoppiati da 'ActualWidth' e' AcutalHeight'. – dlf