none
Surface Textbox zoomen RRS feed

  • Frage

  • Hallo zusammen,

    ich bin gerade dabei eine WPF-Anwendung zu programmieren. Nun würde ich gerne wissen, ob es möglich ist eine Surface-Textbox zu zoomen. Das heißt ich klicke in die Box und diese wird automatisch größer. Vielleicht kann mir jemand weiterhelfen.

    Mfg

    Dienstag, 2. Juli 2013 06:21

Antworten

  • Hi,
    mit Animation kann man das so wie in der nachfolgenden Demo für den Fall, dass sich die Maus in die TextBox bewegt, machen:

    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
      <Window.Resources>
        <Storyboard x:Key="OnMouseEnter1">
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1.5" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1.5" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
        </Storyboard>
        <Storyboard x:Key="OnMouseLeave1">
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
        </Storyboard>
      </Window.Resources>
      <Window.Triggers>
        <EventTrigger RoutedEvent="Mouse.MouseEnter" SourceName="tb">
          <BeginStoryboard Storyboard="{StaticResource OnMouseEnter1}"/>
        </EventTrigger>
        <EventTrigger RoutedEvent="Mouse.MouseLeave" SourceName="tb">
          <BeginStoryboard Storyboard="{StaticResource OnMouseLeave1}"/>
        </EventTrigger>
      </Window.Triggers>
      <Grid x:Name="LayoutRoot">
        <TextBox x:Name="tb" Width="100" Height="50">
          <TextBox.RenderTransform>
              <ScaleTransform CenterX="50" CenterY="25"/>
          </TextBox.RenderTransform>     
        </TextBox>
      </Grid>
    </Window>

    --
    Peter

    • Als Antwort vorgeschlagen Peter Fleischer Dienstag, 2. Juli 2013 07:21
    • Als Antwort markiert Robbo1984 Dienstag, 2. Juli 2013 07:50
    Dienstag, 2. Juli 2013 07:05
  • Hi,
    wenn Du willst, dass die TextBox nur vergrößert wird, wenn sie den Focus hat, dann kann man dies analog mit der folgenden Demo erreichen:

    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
      <Window.Resources>
        <Storyboard x:Key="OnMouseEnter1">
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1.5" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1.5" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
        </Storyboard>
        <Storyboard x:Key="OnMouseLeave1">
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
        </Storyboard>
      </Window.Resources>
      <Window.Triggers>
        <EventTrigger RoutedEvent="TextBox.GotFocus" SourceName="tb">
          <BeginStoryboard Storyboard="{StaticResource OnMouseEnter1}"/>
        </EventTrigger>
        <EventTrigger RoutedEvent="TextBox.LostFocus" SourceName="tb">
          <BeginStoryboard Storyboard="{StaticResource OnMouseLeave1}"/>
        </EventTrigger>
      </Window.Triggers>
      <Grid x:Name="LayoutRoot">
        <TextBox x:Name="tb" Width="100" Height="50">
          <TextBox.RenderTransform>
              <ScaleTransform CenterX="50" CenterY="25"/>
          </TextBox.RenderTransform>
        </TextBox>
        <TextBox VerticalAlignment="Bottom" Width="100" Height="50"/>
      </Grid>
    </Window>

    --
    Peter
    • Als Antwort vorgeschlagen Peter Fleischer Dienstag, 2. Juli 2013 07:20
    • Als Antwort markiert Robbo1984 Dienstag, 2. Juli 2013 07:50
    Dienstag, 2. Juli 2013 07:20

Alle Antworten

  • Hi,
    mit Animation kann man das so wie in der nachfolgenden Demo für den Fall, dass sich die Maus in die TextBox bewegt, machen:

    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
      <Window.Resources>
        <Storyboard x:Key="OnMouseEnter1">
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1.5" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1.5" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
        </Storyboard>
        <Storyboard x:Key="OnMouseLeave1">
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
        </Storyboard>
      </Window.Resources>
      <Window.Triggers>
        <EventTrigger RoutedEvent="Mouse.MouseEnter" SourceName="tb">
          <BeginStoryboard Storyboard="{StaticResource OnMouseEnter1}"/>
        </EventTrigger>
        <EventTrigger RoutedEvent="Mouse.MouseLeave" SourceName="tb">
          <BeginStoryboard Storyboard="{StaticResource OnMouseLeave1}"/>
        </EventTrigger>
      </Window.Triggers>
      <Grid x:Name="LayoutRoot">
        <TextBox x:Name="tb" Width="100" Height="50">
          <TextBox.RenderTransform>
              <ScaleTransform CenterX="50" CenterY="25"/>
          </TextBox.RenderTransform>     
        </TextBox>
      </Grid>
    </Window>

    --
    Peter

    • Als Antwort vorgeschlagen Peter Fleischer Dienstag, 2. Juli 2013 07:21
    • Als Antwort markiert Robbo1984 Dienstag, 2. Juli 2013 07:50
    Dienstag, 2. Juli 2013 07:05
  • Hi,
    wenn Du willst, dass die TextBox nur vergrößert wird, wenn sie den Focus hat, dann kann man dies analog mit der folgenden Demo erreichen:

    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
      <Window.Resources>
        <Storyboard x:Key="OnMouseEnter1">
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1.5" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1.5" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
        </Storyboard>
        <Storyboard x:Key="OnMouseLeave1">
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
          <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="tb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)">
            <SplineDoubleKeyFrame KeyTime="00:00:00.5000000" Value="1" KeySpline="0,1,1,1"/>
          </DoubleAnimationUsingKeyFrames>
        </Storyboard>
      </Window.Resources>
      <Window.Triggers>
        <EventTrigger RoutedEvent="TextBox.GotFocus" SourceName="tb">
          <BeginStoryboard Storyboard="{StaticResource OnMouseEnter1}"/>
        </EventTrigger>
        <EventTrigger RoutedEvent="TextBox.LostFocus" SourceName="tb">
          <BeginStoryboard Storyboard="{StaticResource OnMouseLeave1}"/>
        </EventTrigger>
      </Window.Triggers>
      <Grid x:Name="LayoutRoot">
        <TextBox x:Name="tb" Width="100" Height="50">
          <TextBox.RenderTransform>
              <ScaleTransform CenterX="50" CenterY="25"/>
          </TextBox.RenderTransform>
        </TextBox>
        <TextBox VerticalAlignment="Bottom" Width="100" Height="50"/>
      </Grid>
    </Window>

    --
    Peter
    • Als Antwort vorgeschlagen Peter Fleischer Dienstag, 2. Juli 2013 07:20
    • Als Antwort markiert Robbo1984 Dienstag, 2. Juli 2013 07:50
    Dienstag, 2. Juli 2013 07:20
  • Dankeschön... Ich werde beide Varianten mal ausprobieren und diese dann meinem Vorgesetzten präsentieren....
    Dienstag, 2. Juli 2013 07:52
  • Mein Code sieht bisher wie folgt aus.... Muss ich den Code direkt vor der SurfaceTextBox3 einbinden?

    <Window x:Class="WundeNEU"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WundeNEU" Height="910" Width="1700" WindowStartupLocation="CenterScreen" WindowState="Normal" WindowStyle="None" xmlns:my="http://schemas.microsoft.com/surface/2008" Name="FehlerLoginKonfig" BorderBrush="Black">
        
        
        <Grid>
    
            <Grid.Background>
                <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
                    <GradientStop Color="#FF6895CB" Offset="0" />
                    <GradientStop Color="#FFCED9E7" Offset="0.613" />
                </LinearGradientBrush>
            </Grid.Background>
            <Label Content="Wundart:" Height="Auto" HorizontalAlignment="Left" Margin="130,132,0,0" Name="Label2" VerticalAlignment="Top" FontSize="32" />
                <Label Content="Körperstelle:" FontSize="32" Height="Auto" HorizontalAlignment="Left" Margin="130,204,0,0" Name="Label3" VerticalAlignment="Top" />
                <Label Content="Grad:" FontSize="32" Height="Auto" HorizontalAlignment="Left" Margin="130,276,0,0" Name="Label4" VerticalAlignment="Top" />
            <Label Content="Erstaufnahme am:" FontSize="32" Height="Auto" HorizontalAlignment="Left" Margin="130,386,0,0" Name="Label5" VerticalAlignment="Top" />
                <Label Content="Abgeheilt am:" FontSize="32" Height="Auto" HorizontalAlignment="Left" Margin="130,500,0,0" Name="Label6" VerticalAlignment="Top" />
                <Label Content="Entstehungsort:" FontSize="32" Height="Auto" HorizontalAlignment="Left" Margin="130,618,0,0" Name="Label7" VerticalAlignment="Top" />
    
            <ComboBox Height="51" HorizontalAlignment="Left" Margin="420,134,0,0" Name="ComboBox1" VerticalAlignment="Top" Width="482" FontSize="28" Background="White" BorderBrush="#FF1C5CB8" ItemsSource="{Binding}"/>
                
           
            <Label Content="WUNDE HINZUFÜGEN" Height="Auto" HorizontalAlignment="Left" Margin="130,12,0,0" Name="Label1" VerticalAlignment="Top" FontSize="40" Foreground="Black" />
            <Label Content="Kommentar:" FontSize="32" Height="Auto" HorizontalAlignment="Left" Margin="962,132,0,0" Name="Label8" VerticalAlignment="Top" />
            <Label Content="Dokumente:" FontSize="32" Height="Auto" HorizontalAlignment="Left" Margin="962,338,0,0" Name="Label9" VerticalAlignment="Top" />
            <my:SurfaceButton Content="Hinzufügen" FontSize="40" Foreground="White" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Margin="1398,740,0,0" Name="SurfaceButton3" Padding="6,2,10,10" VerticalAlignment="Top" VerticalContentAlignment="Center" Width="240">
                <my:SurfaceButton.Background>
                    <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
                        <GradientStop Color="#FF1B5BB8" Offset="0" />
                        <GradientStop Color="#FF719CCD" Offset="0.914" />
                    </LinearGradientBrush>
                </my:SurfaceButton.Background>
            </my:SurfaceButton>
            <my:SurfaceButton Content="Schließen" FontSize="40" Foreground="White" Height="60" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Margin="130,740,0,0" Name="SurfaceButton1" Padding="6,2,10,10" VerticalAlignment="Top" VerticalContentAlignment="Center" Width="240">
                <my:SurfaceButton.Background>
                    <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
                        <GradientStop Color="#FF1B5BB8" Offset="0" />
                        <GradientStop Color="#FF719CCD" Offset="0.914" />
                    </LinearGradientBrush>
                </my:SurfaceButton.Background>
            </my:SurfaceButton>
            <ComboBox Background="White" BorderBrush="#FF1C5CB8" FontSize="28" Height="51" HorizontalAlignment="Left" Margin="420,206,0,0" Name="ComboBox2" VerticalAlignment="Top" Width="482" ItemsSource="{Binding}">
               
                
            </ComboBox>
            <ComboBox Background="White" BorderBrush="#FF1B5BB8" FontSize="28" Height="51" HorizontalAlignment="Left" Margin="420,278,0,0" Name="ComboBox3" VerticalAlignment="Top" Width="482">
                <ComboBoxItem Content="0. Grad" />
                <ComboBoxItem Content="1. Grad" />
                <ComboBoxItem Content="2. Grad" />
                <ComboBoxItem Content="3. Grad" />
            </ComboBox>
            <ComboBox Background="White" BorderBrush="#FF1C5CB8" FontSize="28" Height="51" HorizontalAlignment="Left" Margin="420,620,0,0" Name="ComboBox6" VerticalAlignment="Top" Width="482" />
            <my:SurfaceTextBox Height="51" HorizontalAlignment="Left" Margin="420,388,0,0" Name="SurfaceTextBox1" VerticalAlignment="Top" Width="370" FontSize="28" BorderBrush="#FF1B5BB8" BorderThickness="1" Background="White" Foreground="Black" />
            <my:SurfaceTextBox Background="White" BorderBrush="#FF1B5BB8" BorderThickness="1" FontSize="28" Foreground="Black" Height="51" HorizontalAlignment="Left" Margin="420,502,0,0" Name="SurfaceTextBox2" VerticalAlignment="Top" Width="370" />
            <Calendar Height="Auto" HorizontalAlignment="Left" Margin="742,388,0,0" Name="Calendar1" VerticalAlignment="Top" Width="Auto" IsEnabled="True" FontSize="18" Visibility="Hidden" />
            <my:SurfaceButton FontSize="40" Foreground="White" Height="100" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Margin="821,377,0,0" Name="SurfaceButton2" Padding="6,2,10,10" VerticalAlignment="Top" VerticalContentAlignment="Center" Width="100">
                <my:SurfaceButton.Background>
                    <ImageBrush ImageSource="/APP2;component/Images/scheduled_tasks.ico" />
                </my:SurfaceButton.Background>
            </my:SurfaceButton>
            <my:SurfaceButton FontSize="40" Foreground="White" Height="100" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Margin="821,483,0,0" Name="SurfaceButton4" Padding="6,2,10,10" VerticalAlignment="Top" VerticalContentAlignment="Center" Width="100">
                <my:SurfaceButton.Background>
                    <ImageBrush ImageSource="/APP2;component/Images/scheduled_tasks.ico" />
                </my:SurfaceButton.Background>
            </my:SurfaceButton>
            <Calendar Height="170" HorizontalAlignment="Left" Margin="741,502,0,0" Name="Calendar2" VerticalAlignment="Top" Width="180" Visibility="Hidden" />
            <my:SurfaceTextBox Height="138" HorizontalAlignment="Left" Margin="962,191,0,0" Name="SurfaceTextBox3" VerticalAlignment="Top" Width="676" Background="White" Foreground="Black" HorizontalScrollBarVisibility="Auto" CharacterCasing="Normal" AcceptsTab="False" FontSize="28" TextWrapping="Wrap" UseLayoutRounding="False" OverridesDefaultStyle="False" />
            <ComboBox Background="White" BorderBrush="#FF1C5CB8" FontSize="28" Height="51" HorizontalAlignment="Left" Margin="962,388,0,0" Name="ComboBox4" VerticalAlignment="Top" Width="676" />
        </Grid>
    </Window>
    


    Dienstag, 2. Juli 2013 08:09
  • Ich habe es hinbekommen.... Danke nochmals.... 
    Dienstag, 2. Juli 2013 08:43