У меня есть ListBox с HorizontalAlignment = "Left", поэтому ширина списка зависит от его содержимого. В каждом элементе списка есть текстовое поле. Когда я печатаю текстовое поле, увеличивается ширина списка. Я хочу, чтобы ширина TextBox зависела от ширины элемента ListBox, но не наоборот, а текст в TextBox обернут.Ввод текста в TextBox приводит к увеличению ширины ListBox
<Window x:Class="WpfOverflow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="1000">
<ListBox Background="CadetBlue" HorizontalAlignment="Left" MaxWidth="500">
<ListBox.Items>
<ListBoxItem>
<DockPanel>
<TextBlock Text="Some text of the element" DockPanel.Dock="Top"/>
<TextBox Text="Enter text here" TextWrapping="WrapWithOverflow"/>
</DockPanel>
</ListBoxItem>
</ListBox.Items>
</ListBox>
UPDATE: не принял ответ, но ответ на @bathineni помогли в этом случае Prevent a TextBox from horizontal expanding in WPF
<ListBox Background="CadetBlue" HorizontalAlignment="Left" MaxWidth="500" HorizontalContentAlignment="Stretch">
<ListBox.Items>
<ListBoxItem>
<DockPanel>
<TextBlock Text="==== Some text of the element =====" DockPanel.Dock="Top"/>
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Disabled" Name="scv" >
<TextBox Text="Enter text here" Style="{StaticResource textBoxMultiline}" MaxWidth="{Binding ElementName=scv, Path=ActualWidth}" HorizontalAlignment="Stretch" />
</ScrollViewer>
</DockPanel>
</ListBoxItem>
</ListBox.Items>
</ListBox>
Разве это не тот случай, просто определяя 'Width' на вашем' ListBoxItem'? –
Я не хочу фиксировать ширину, ширина зависит от элементов в верхней части элемента списка, представленного «Некоторым текстом элемента», эта ширина детали зависит от пользовательских данных. –