Обратите внимание, как текстовое поле расширяется вправо, пока в нем не будет достаточно места по горизонтали для размещения содержимого? Что ж, я бы хотел, чтобы он не расширялся и не умещал текст в пространстве в окне.
Если окна расширяются, то Grid.Column, в котором они находятся, расширяется, но само текстовое поле должно расширяться, чтобы соответствовать. Достаточно просто?
Какие-либо предложения? Это мой первый набег на WPF, и до сих пор он был довольно гладким.
Изменить: вот моя разметка XAML:
<Window x:Class="GameLenseWpf.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="450" Width="350" MinHeight="450" MinWidth="350">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.15*" />
<RowDefinition />
</Grid.RowDefinitions>
<Image Grid.Row="0" Stretch="Fill" Source="Image/topBarBg.png" />
<StackPanel Orientation="Horizontal" Grid.Row="0">
<TextBlock Text="Platform"
Foreground="White"
FontFamily="Georgia"
FontSize="15"
Margin="10"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<ComboBox x:Name="cmbPlatform"
Margin="10"
FontFamily="Georgia"
FontSize="15"
MinHeight="30"
MinWidth="140"
VerticalAlignment="Center"
VerticalContentAlignment="Center" SelectionChanged="cmbPlatform_SelectionChanged">
<ComboBoxItem>All Platforms</ComboBoxItem>
<ComboBoxItem>Playstation 3</ComboBoxItem>
<ComboBoxItem>XBox 360</ComboBoxItem>
<ComboBoxItem>Wii</ComboBoxItem>
<ComboBoxItem>PSP</ComboBoxItem>
<ComboBoxItem>DS</ComboBoxItem>
</ComboBox>
</StackPanel>
<Image x:Name="imgAbout" Grid.Row="0" Source="Image/about.png"
Height="16" HorizontalAlignment="Right"
VerticalAlignment="Center"
Margin="0 0 10 0" />
<ListBox Grid.Row="1" x:Name="lstGames" Background="#343434" Padding="5">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="120" Margin="0 10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Border BorderBrush="#202020" BorderThickness="5" CornerRadius="4" Panel.ZIndex="0">
<Image Grid.Row="0" Grid.Column="0" Source="{Binding ImageUrl}" Stretch="Fill"/>
</Border>
<StackPanel Grid.Row="0" Grid.Column="1" Margin="12 0 0 0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="Title:" FontFamily="Arial" Foreground="White"/>
<TextBlock Text="{Binding Title}" FontFamily="Arial" Foreground="White" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Release Date:" FontFamily="Arial" Foreground="White" />
<TextBlock Text="{Binding ReleaseDate}" FontFamily="Arial" Foreground="White" />
</StackPanel>
<TextBlock Text="Synopsis" FontFamily="Arial" Foreground="White" />
<TextBox Background="#454545" Text="{Binding Synopsis}" MinHeight="76" />
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
2 ответа
Чтобы TextBox помещался в ListBox, вы можете внести следующие изменения:
- Установите содержимое списка равным ширине списка, используя: HorizontalContentAlignment = "Stretch".
- Отключите горизонтальную полосу прокрутки списка, чтобы предотвратить получение списком желаемых размеров элементов управления и предотвращение переноса слов в текстовом поле.
- Установите TextWrapping = "Wrap" в TextBox.
Вот XAML:
<ListBox Grid.Row="1" x:Name="lstGames" Background="#343434" Padding="5"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
HorizontalContentAlignment="Stretch" >
</ListBox>
<TextBox Text="{Binding Synopsis}" MinHeight="76" TextWrapping="Wrap" />
Я считаю, что вам нужно установить свойство Margin элемента управления текстовым полем. В дизайнере вы можете видеть маленькие кружочки вокруг каждого текстового поля (и каждого элемента управления, если на то пошло). Щелкните маленький кружок с правой стороны текстового поля, чтобы этот элемент управления незначительно увеличивался с доступным пространством в текущем элементе управления макетом (щелкнув кружок, поле будет добавлено в XAML).
Я не знаю, отрегулировали ли вы на своем изображении размер окна, но с этим изображением, похоже, вам также нужно будет установить ширину для вашего текстового поля.
Это помогает?
TextWrapping="Wrap"
- но я попробовал это с вашим точным кодом, и это не сработало, как я ожидал. Я пытаюсь увидеть то, что вижу сейчас.
Похожие вопросы
Новые вопросы
wpf
Windows Presentation Foundation, или WPF, является подсистемой для визуализации пользовательских интерфейсов в приложениях на основе Windows.