2015-08-20 2 views
0

У меня есть WrapPanel, в которую я поместил некоторые Grid с, в которую я поместил некоторые TextBox Э.С., подобный следующему:Как ограничить максимальную ширину элемента в WrapPanel до ширины WrapPanel?

<WrapPanel Orientation="Horizontal"> 
    <!-- Other label/text box pair grids --> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="Auto" /> 
     </Grid.ColumnDefinitions> 
     <Label Grid.Column="0" Content="FancyLabel" Margin="1,1,1,0"/> 
     <TextBox Name="FancyValue" 
       Grid.Column="1" 
       Margin="1,1,1,0" 
       Text="{Binding}" 
       MinWidth="45" 
       Width="Auto" 
       TextWrapping="Wrap" 
       AcceptsReturn="False" /> 
    </Grid> 
</WrapPanel> 

Если пользователь вводит текст, который слишком долго, а не упаковка для дополнительная линия, TextBox расширяет ширину от экрана, а не уважая TextWrapping, подобный следующему:

Example UI

существует ли механизм, чтобы ограничить максимальную imum width (предпочтительно без привязки данных к ActualWidth на WrapPanel)?

+0

, что странное поведение текстового поля, но есть вы пытались предотвратить изменения ширины текстового поля, используя событие Sizechanged, если не путем привязки данных? –

+0

@RohitPrakash: Да, я мог бы сделать привязку или код, чтобы исправить это. Но любое такое решение, вероятно, будет хрупким. Практически каждый раз, когда я сталкиваюсь с проблемами форматирования, например, этот WPF имеет какое-то прикрепленное свойство или что-то, о чем я не знал, это то, что я искал. Если этого не существует, это нормально; но я хотел спросить, прежде чем я что-то взломал. –

+0

использование TextTrimming. Https://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.texttrimming(v=vs.110).aspx –

ответ

0

Благодаря Rob DeLuca для отправки мне что-то, что работает за пределами SO:

Изменение Auto на второй колонке * вместо оборачивает правильно:

<WrapPanel Orientation="Horizontal"> 
    <!-- Other label/text box pair grids --> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="*" /> <!-- !!! --> 
     </Grid.ColumnDefinitions> 
     <Label Grid.Column="0" Content="FancyLabel" Margin="1,1,1,0"/> 
     <TextBox Name="FancyValue" 
       Grid.Column="1" 
       Margin="1,1,1,0" 
       Text="{Binding}" 
       MinWidth="45" 
       Width="Auto" 
       TextWrapping="Wrap" 
       AcceptsReturn="False" /> 
    </Grid> 
</WrapPanel> 
Смежные вопросы