Sto tentando di modificare il mio controllo semplice in modo che la casella di testo non cresca man mano che l'utente digita il testo lungo. Ho dato un'occhiata ad alcune soluzioni pubblicate qui su Stackoverflow che suggeriscono di utilizzare una griglia e un bordo invisibile e di legare la larghezza della casella di testo alla larghezza effettiva del bordo, ma non riesco a farlo funzionare nella mia configurazione.Arresto del TextBox WPF dal crescere con il testo
Ecco la XAML del mio controllo:
<StackPanel Margin="5,0">
<WrapPanel Margin="0,0,0,5">
<TextBlock Foreground="White" Margin="0,0,2,0">TEXT</TextBlock>
<TextBlock Foreground="#FF0099CC" FontWeight="Bold">MORE TEXT</TextBlock>
</WrapPanel>
<Border Margin="2,4,0,4" BorderThickness="1" SnapsToDevicePixels="True" Background="Black"
BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}">
<StackPanel Orientation="Horizontal">
<Image Source="..\Resources\zoom.png" Width="13"/>
<TextBox Foreground="White" Background="Black" BorderBrush="Transparent">THIS IS SOME TEXT</TextBox>
</StackPanel>
</Border>
</StackPanel>
Tutte le idee? Ho bisogno di zoom.png per apparire "all'interno" della casella di testo, quindi utilizzo un pannello di pila orizzontale e posiziono l'immagine e la casella di testo affiancate, entrambe circondate dallo stesso bordo.
C'è un modo per impedire alla mia casella di testo di crescere automaticamente man mano che il testo viene digitato?
Grazie.
UPDATE:
Di seguito è riportato il codice XAML sto testando con.
<Window x:Class="Desktop.Shell"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:composite="http://www.codeplex.com/CompositeWPF"
Title="MyShell" Height="50" Width="900"
WindowStyle="None"
ShowInTaskbar="False"
AllowsTransparency="True"
Background="Transparent"
ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterScreen">
<Border BorderBrush="Black"
BorderThickness="1.5"
CornerRadius="5"
Background="Gray">
<ItemsControl composite:RegionManager.RegionName="MainRegion">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel></WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Border>
</Window>
<UserControl x:Class="Desktop.SearchTextBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="50" Margin="0">
<StackPanel Margin="5,0">
<WrapPanel Margin="0,0,0,5">
<TextBlock Foreground="White" Margin="0,0,2,0">TEXT</TextBlock>
<TextBlock Foreground="#FF0099CC" FontWeight="Bold">MORE TEXT</TextBlock>
</WrapPanel>
<Border Margin="2,4,0,4" BorderThickness="1" SnapsToDevicePixels="True" Background="Black"
BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}">
<Grid x:Name="grdTest">
<Image HorizontalAlignment="Left" Source="..\Resources\zoom.png" Width="13"/>
<TextBox Margin="16,0,0,0" Foreground="White" Background="Black" BorderBrush="Transparent" Width="{Binding ElementName=grdTest, Path=ActualWidth}">THIS IS SOME TEXT</TextBox>
</Grid>
</Border>
</StackPanel>
</UserControl>
Ho solo aggiunto il mio controllo utente a MainRegion di Windows.
Grazie. Ho provato questo e ha funzionato con un difetto per me. Non può essere utilizzato se si utilizza un scrollviewer. Originariamente ne avevo uno e quello che stava succedendo è che la casella di testo è cresciuta quando l'interfaccia utente è cresciuta, ma non si sarebbe ristretta quando l'interfaccia utente si è ridotta. – famousKaneis
@nameless Devi impostare 'HorizontalScrollBarVisibility =" False "' per il tuo Scrollviewer per far sì che la tua casella di testo segua la larghezza della finestra man mano che si riduce. – M463
Questo dovrebbe essere stato corretto in WPF se questa è l'unica soluzione reale ... (Non ho trovato niente di meglio ancora e siamo nel 2016 ...) – Arwin