У меня есть проект WPF, написанный с использованием C# поверх Каркас призмы.
У меня есть кнопка при нажатии, и я использую InteractionRequest для отображения диалогового окна. Вид этого диалога имел ширину 550.
Представление разработано с помощью сетки, я хочу, чтобы сетка также имела ширину 550, что является максимальной шириной диалога.
Однако кажется, что сетка всегда растягивается больше, чем диалог, когда текст в столбце длинный.
Вот скриншот, который лучше объясняет визуальную проблему.
Первая линия на рисунке представляет собой title, а вторая линия представляет собой description.
Вот мой код XAML, который отображает этот диалог / представление
<UserControl x:Class = "Modules.Register.Views.RecallTransactionView"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:local = "clr-namespace:Modules.Register.Views"
xmlns:fa = "http://schemas.fontawesome.io/icons/"
xmlns:materialDesign = "http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:prism = "http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel = "True"
TextElement.Foreground = "{DynamicResource MaterialDesignBody}"
TextElement.FontWeight = "Regular"
TextElement.FontSize = "14"
TextOptions.TextFormattingMode = "Ideal"
TextOptions.TextRenderingMode = "Auto"
mc:Ignorable = "d"
Width = "550">
<Grid Width = "550" >
<DataGrid ItemsSource = "{Binding Dialog.SavedTransactions}"
AutoGenerateColumns = "False"
IsReadOnly = "True"
HorizontalAlignment = "Stretch"
VerticalAlignment = "Top"
CanUserAddRows = "False"
VerticalContentAlignment = "Center"
HorizontalContentAlignment = "Stretch"
CellStyle = "{StaticResource CenterDataGridCell}">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text = "{Binding Title}" TextWrapping = "Wrap" />
<TextBlock Text = "{Binding Description}" TextWrapping = "Wrap" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button VerticalAlignment = "Center"
Command = "{Binding RelativeSource = {RelativeSource AncestorType = {x:Type DataGrid}},
Path=DataContext.SelectTransaction}"
CommandParameter = "{Binding}">
<StackPanel Orientation = "Horizontal">
<fa:FontAwesome Icon = "Eye"
FontSize = "18" />
<TextBlock Text = "Recall"
Padding = "7 0 0 0" />
</StackPanel>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>
Как видите, и Title, и Description имеют TextWrapping = "Wrap", но по какой-то причине он не является упаковкой.
Я в основном пытаюсь удалить горизонтальную полосу прокрутки, но заставляю текст переноситься. Как я могу исправить эту проблему?





Вам нужно будет установить ширину первого столбца сетки на '*'.
<DataGridTemplateColumn Width = "*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text = "{Binding Title}" TextWrapping = "Wrap" />
<TextBlock Text = "{Binding Description}" TextWrapping = "Wrap" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>