Tengo una aplicación de wpf con un par de formas. En tiempo de diseño son pequeños, y que no están en el auto de tamaño. Sin embargo en tiempo de ejecución son gigantes, incluso sin contenido en ellas para hacerlas grandes.

Por qué está sucediendo esto?

Aquí es una de las formas

<Window x:Class="SuperPluginPicker"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:tree="clr-namespace:Aga.Controls.Tree;assembly=Aga.Controls" 
mc:Ignorable="d" 
d:DesignHeight="296" d:DesignWidth="634" Title="Plugin Selector" WindowStartupLocation="CenterOwner">
<Grid>
<DockPanel LastChildFill="true">
<StackPanel DockPanel.Dock="Bottom" Height="30" Orientation="Horizontal">
<Button Content="Ok" Name="btnOk" Click="btnOk_Click"></Button>
<Button Content="Cancel" Name="btnCancel" Click="btnCancel_Click"></Button>
</StackPanel>
<StackPanel DockPanel.Dock="Right">
<Label Content="Selected Plugins"></Label>
<ListBox Name="lstSelectedPlugins"  Width="200">
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
<StackPanel DockPanel.Dock="Right" Width="100" VerticalAlignment="Center">
<Button Content="Add" Name ="btnAdd" Click="btnAdd_Click"></Button>
<Button Content="Remove" Name="btnRemove" Click="btnRemove_Click"></Button>
<Button Content="Remove All" Name="btnRemoveAll" Click="btnRemoveAll_Click"></Button>
</StackPanel>
<tree:TreeList  x:Name="pluginTree">
<tree:TreeList.View>
<GridView x:Name="treeGrid">
<GridView.Columns>
<GridViewColumn Width="Auto" Header="Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<tree:RowExpander/>
<TextBlock Text="{Binding Name}"></TextBlock>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Author" Width="Auto"  DisplayMemberBinding="{Binding Author}"/>
<GridViewColumn Header="Description" Width="Auto" DisplayMemberBinding="{Binding Type}"/>
</GridView.Columns>
</GridView>
</tree:TreeList.View>
</tree:TreeList>
</DockPanel>
</Grid>
</Window>
  • ¿De qué tamaño son ellos en tiempo de ejecución? 634×296?
  • im ejecución de un 1900×1280 de pantalla ancha y la ventana sólo las hojas alrededor de un 1/2 pulgada a cada lado de la pantalla. (bueno 1/2 pulgada en la parte superior izquierda y la inferior. tal vez de 2 pulgadas a la derecha. pero sigue siendo muy grande)
  • posibles duplicados de Tamaño de la Ventana cuando SizeToContent no se especifica
InformationsquelleAutor Jason Coyne | 2010-06-30

3 Comentarios

  1. 35

    Si crea un <Window/> con este código:

    <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" />

    Entonces cuando se ejecute desde Visual Studio mostrará una ventana con el mismo tamaño de la que pones en tu pregunta. Así que esto no es algo que explícitamente se hizo.

    Lo que he encontrado es el valor predeterminado calcula el tamaño de una WPF Window. Para obtener diferentes resultados, especifique un SizeToContent parámetro en la Ventana, como paxdiablo señalado, o establecer explícitamente el tamaño de la ventana con el MinHeight, MaxHeight, Height, MinWidth, MaxWidth, y/o Width propiedades.

    • Una muy clara, bien escrito y precisa respuesta. +1.
    • Por cierto, si crea una ventana en MFC, Win32 o Win16 usted descubrirá que usted consigue el mismo tamaño predeterminado. Por ejemplo, el código Win32 CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); da lo mismo el tamaño de la ventana WPF hace. WPF es no seleccionar el tamaño predeterminado: Windows lo está haciendo a sí mismo, mediante un algoritmo que se ha mantenido prácticamente el mismo desde Windows 2.0 salió en 1987.
    • Que se calcula a partir del tamaño de la pantalla principal, a continuación, haga?
    • Me doy cuenta de que la configuración de la Width y Height en el panel de propiedades es en realidad ajuste el diseñador de la Anchura y la Altura no es la Anchura y la Altura..
  2. 7

    ¿Por qué no acaba de agregar un:

    Height="296" Width="634"

    a la Window definición? No estoy seguro de que el tamaño predeterminado, sino que me he fijado tamaños específicos en mi windows para evitar esto. Entonces me dinámicamente cambiar el tamaño en el inicio de la aplicación del código.

    Estoy esperando que WPF tendrá un pack-como característica, en donde en forma recursiva conjuntos de controles basados en el preferido de los tamaños de la sub-controles (Swing y wxPython ambos tenían esta característica) si lo desea, puede ir buscando.


    En realidad, un poco de búsqueda se ha convertido hasta el de la Ventana.SizeToContent propiedad que puede ser lo que estás buscando. Su valor predeterminado es Manual pero, si se establece uno de los otros valores (Width, Height o WidthAndHeight), puede ver una mejor presentación.

    De hecho, la he pinchado sobre el ordenador portátil de Windows y entró:

    SizeToContent="WidthAndHeight"

    en la Ventana de definición y se ve perfectamente de tamaño. Así, te sugiero que dar una oportunidad y ver si se soluciona (o, al menos, funciona todo) de su problema.

    • Que funciona, pero ¿por qué es escoger un gran tamaño por defecto?
    • ni idea, pero sospecho que es la consulta de su sistema de métricas para obtener el tamaño de la pantalla. Mi aplicación actual (mi primer WPF uno) se comporta del mismo modo en que los centros y deja un poco alrededor de los bordes. Recuerdo haber leído en algún lugar que WPF tendría el valor predeterminado de 60% de la anchura y la altura del monitor principal si no especificar a él, sino también que hay muchos otras cosas que también podrían influir en ella (aunque no puedo encontrar la referencia es de ahora). Creo que voy a ir con el SizeToContent en el futuro (ver mi actualización) y no depender de algunos MS flunkie acertar 🙂
    • Y he encontrado el enlace, por último, que sólo pasa a hacer esta pregunta engañar por desgracia: stackoverflow.com/questions/1437099/…
    • Estoy bien con ser un duplciate tan largo como puedo obtener una buena respuesta 🙂
    • No es precisamente un duplicado de la pregunta, pero sus respuestas no cubren el mismo terreno.
    • De todos modos, la configuración de un ancho fijo y altura en WPF está mal. Una de las cosas buenas acerca de WPF es que se adaptan automáticamente a los diferentes tamaños de fuente, así que si se cambia el sistema de la fuente de todo lo serán también mayores.
    • parece que ha perdido el poco donde me dijo: «Entonces yo dinámicamente cambiar el tamaño en el inicio de la aplicación del código» 🙂 cambios en los tamaños de fuente y así sucesivamente también se utiliza automáticamente mi dinámica de cambio de tamaño de código.

  3. 6

    En el diseño que usted está viendo pequeños porque tiene diseño de mezcla de propiedades de la ventana.

    d:DesignHeight=»296″ d:DesignWidth=»634″

    Desde la Cuadrícula es un diseño dinámico, que se extienden hasta el ancho de la ventana & altura. Para restringir el tamaño de la ventana se necesita mencionar la Altura de la & propiedades de Ancho de la ventana.

Dejar respuesta

Please enter your comment!
Please enter your name here