Tôi đang cố sửa đổi điều khiển đơn giản của mình để hộp văn bản không phát triển khi người dùng nhập văn bản dài. Tôi đã xem xét một số giải pháp được đăng ở đây tại Stackoverflow đề xuất sử dụng Grid và một Border vô hình và liên kết Width của hộp văn bản với ActualWidth của Border, nhưng tôi không thể làm cho nó hoạt động trong thiết lập của mình.Dừng WPF TextBox phát triển với văn bản
Đây là XAML tầm kiểm soát của tôi:
<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>
Bất kỳ ý tưởng? Tôi cần zoom.png xuất hiện "bên trong" của hộp văn bản để tôi sử dụng bảng điều khiển ngăn xếp ngang và chỉ đặt hộp hình ảnh và văn bản cạnh nhau, cả hai được bao quanh bởi cùng một đường viền.
Có cách nào để tôi dừng hộp văn bản tự động phát triển khi nhập văn bản không?
Cảm ơn.
UPDATE:
Dưới đây là XAML Tôi đang thử nghiệm với.
<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>
Tôi chỉ thêm điều khiển người dùng vào MainRegion của Window.
Cảm ơn. Tôi đã thử điều này và nó đã làm việc với một lỗ hổng cho tôi. Nó không thể được sử dụng nếu bạn sử dụng một scrollviewer. Ban đầu tôi đã có một và những gì đã xảy ra là hộp văn bản đã tăng lên khi giao diện người dùng tăng lên nhưng sẽ không co lại khi giao diện người dùng bị thu hẹp. – famousKaneis
@nameless Bạn phải đặt 'HorizontalScrollBarVisibility =" False "' cho Scrollviewer của bạn để có được Textbox của bạn theo chiều rộng của cửa sổ khi nó co lại. – M463
Điều này cần phải được sửa trong WPF nếu đây là giải pháp thực sự duy nhất ... (Tôi đã không tìm thấy bất cứ điều gì tốt hơn bản thân mình và chúng tôi đang trong năm 2016 ...) – Arwin