我想修改我的簡單控件,以便文本框不會隨着用戶鍵入長文本而增長。我看了一下在Stackoverflow發佈的一些解決方案,這些解決方案建議使用網格和不可見的邊框,並將文本框的寬度綁定到邊框的ActualWidth,但我似乎無法讓它在我的設置中工作。停止WPF文本框與文本增長
這是我控制的XAML:
<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>
任何想法?我需要zoom.png出現在文本框的「內部」,所以我使用水平堆疊面板,並將圖像和文本框並排放置,兩者都被相同的邊框包圍。
有沒有一種方法可以讓我停止自動增長文本框的文本輸入?
謝謝。
UPDATE:
下面是我與測試XAML。
<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>
我只是將我的用戶控件添加到窗口的MainRegion。
謝謝。我試過這個,它對我有一個缺陷。如果您使用滾動查看器,則無法使用它。我原來有一個,發生的事情是,當用戶界面增長時,文本框增長,但當用戶界面縮小時不會縮小。 – famousKaneis 2015-06-01 17:08:28
@nameless你必須爲你的滾動查看器設置'HorizontalScrollBarVisibility =「False」'讓你的文本框在縮小時跟隨窗口寬度。 – M463 2015-07-30 14:03:06
如果這是唯一真正的解決方案,這應該在WPF本身中得到修復......(我自己還沒找到更好的東西,而且我們在2016年......) – Arwin 2016-03-16 19:13:19