2013-10-28 13 views
12

Procedura:Come disattivare il ridimensionamento di un controllo utente in WPF

  1. Disabilita ridimensionamento per questo UserControl. In altre parole, quando l'utente afferra gli angoli oi lati di questo usercontrol con un mouse, non voglio che l'utente sia in grado di modificare le dimensioni del controllo uscontrol?
  2. Oppure, se non è possibile interrompere il ridimensionamento, come faccio a trascinare il lato destro del controllo us?
<UserControl x:Class="MyEditor.MyDialog" 
     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" 
     mc:Ignorable="d" 
     d:DesignHeight="152" d:DesignWidth="590" HorizontalContentAlignment="Right" MinWidth="{Binding ElementName=VariableType}" MinHeight="{Binding RelativeSource={RelativeSource Self}}"> 
<Grid Width="591" Height="147" MinWidth="{Binding ElementName=VariableTypeTextBox}"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="137*" /> 
     <ColumnDefinition Width="454*" MinWidth="250" /> 
    </Grid.ColumnDefinitions> 
    <Button Content="Cancel" Height="23" Margin="0,94,7,0" Name="CancelButton" VerticalAlignment="Top" Click="CancelButton_Click" Grid.Column="1" HorizontalAlignment="Right" Width="75" HorizontalContentAlignment="Center" VerticalContentAlignment="Top" /> 
    <Button Content="Create" Height="23" Margin="0,94,108,0" Name="CreateButton" VerticalAlignment="Top" Click="CreateButton_Click" Grid.Column="1" HorizontalAlignment="Right" Width="75" HorizontalContentAlignment="Center" VerticalContentAlignment="Top" /> 
    <Label Content="Variable Name " Height="28" Margin="0,12,29,0" Name="VariableName" VerticalAlignment="Top" HorizontalAlignment="Right" Width="96" Target="{Binding}" HorizontalContentAlignment="Right" /> 
    <TextBox Height="29" Margin="0,11,7,0" Name="VarNameTextBox" VerticalAlignment="Top" KeyDown="OnKeyDownHandler" MouseLeave="MouseLeaveHandler" LostFocus="LostFocusHandler" Grid.Column="1" HorizontalAlignment="Stretch" /> 
    <Label Content="Variable Type" Height="28" Margin="0,0,29,73" Name="VariableType" VerticalAlignment="Bottom" HorizontalContentAlignment="Right" HorizontalAlignment="Right" Width="96" /> 
    <TextBox Height="23" Margin="0,51,7,0" Name="VariableTypeTextBox" VerticalAlignment="Top" IsReadOnly="True" Background="Silver" Foreground="Black" Grid.Column="1" HorizontalAlignment="Stretch" Width="AUTO" /> 
</Grid> 

risposta

20

Hai incollato il codice XAML per un UserControl, ma la tua domanda sta chiedendo circa un Window. Pertanto, sarà necessario posizionare UserControl all'interno di una finestra configurata per non consentire il ridimensionamento.

Una finestra WPF ha una proprietà ResizeMode, che può essere uno dei seguenti:

  • noresize
  • CanMinimize
  • CanResize (default)
  • CanResizeWithGrip

Avrete desidera NoResize.

Esempio:

<Window x:Class="MyEditor.Views.EditorWindow" 
     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:views="clr-namespace:MyEditor" 
     mc:Ignorable="d" 
     ResizeMode="NoResize" 
     Title="Editor Window"> 
    <views:MyDialog /> 
</Window> 

prega di consultare il documentation per maggiori dettagli.

+0

Grazie. Ho anche inserito il mio controllo utente di qyestion. – user1298925

+0

Funzionerebbe per posizionare il tuo UserControl in una finestra, come ho mostrato nella mia risposta? – devuxer

+0

Arresta tutto in modo anomalo perché nel codice ho creato un UserControl ma ora sto creando una finestra. Se esistesse un modo per rendere il controllo utente non ridimensionabile, sarebbe il percorso desiderato. Qualche idea? Grazie in anticipo. – user1298925

2

Impostare semplicemente le proprietà MinWidth/MaxWidth e MinHeight/MaxHeight sul valore desiderato.

+0

Grazie. Ho impostato Max e Min per UserControl ma non funziona. – user1298925

0

per la disattivazione: ResizeMode = "CanMinimize"

<Window x:Class="XXXXXX.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:XXXXXXX" 
     mc:Ignorable="d" 
     WindowState="Maximized" 
     ResizeMode="CanMinimize" 
     Title="Window"> 
Problemi correlati