C# WPF:拉伸上浆顺序
我正在创建一个模式对话框窗口,它包含三个基本部分:包含指令的文本块、对话框面板的ContentControl和对话框按钮的ContentControl。每个零件都包含在单独的网格行中 对于对话框的大小,我有一些具体的限制。我遇到的问题是指令文本块。我希望指令与对话框面板的ContentControl一样宽。然后,说明书应根据需要进行包装和垂直增长。如果指令不能垂直增长,那么它应该开始水平增长 将指令设置为ContentControl的宽度并垂直增长很简单。我似乎不明白的是,当它离开垂直空间时,如何使其水平生长。我最初的想法是创建一个扩展TextBlock并覆盖MeasureOverride的类。然而,这种方法是封闭的。目前,我正在考虑让对话框窗口覆盖MeasureOverride来计算指令块的可用大小 我是否错过了一个更简单的实现方法?有人有比这更好的主意吗?干扰测量似乎要做很多工作 下面是一些示例代码,让您大致了解对话框的布局:C# WPF:拉伸上浆顺序,c#,wpf,layout,C#,Wpf,Layout,我正在创建一个模式对话框窗口,它包含三个基本部分:包含指令的文本块、对话框面板的ContentControl和对话框按钮的ContentControl。每个零件都包含在单独的网格行中 对于对话框的大小,我有一些具体的限制。我遇到的问题是指令文本块。我希望指令与对话框面板的ContentControl一样宽。然后,说明书应根据需要进行包装和垂直增长。如果指令不能垂直增长,那么它应该开始水平增长 将指令设置为ContentControl的宽度并垂直增长很简单。我似乎不明白的是,当它离开垂直空间时,如
<Window
x:Class="Dialogs.DialogWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="dialogWindow"
ShowInTaskbar="False"
WindowStyle="None"
AllowsTransparency="True"
Background="Transparent"
ResizeMode="NoResize"
SizeToContent="WidthAndHeight"
WindowStartupLocation="CenterScreen">
<Border Style="{StaticResource WindowBorderStyle}" Margin="15">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock
Margin="25,5"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Text="{Binding Instructions}"
TextWrapping="Wrap"
Width="{Binding ElementName=panelContentControl, Path=ActualWidth, Mode=OneWay}"/>
<ContentControl
x:Name="panelContentControl"
Grid.Row="1"
Margin="25,5"
Content="{Binding PanelContent}"/>
<ContentControl
x:Name="buttonsContentControl"
Grid.Row="2"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Margin="25,5"
Content="{Binding ButtonsContent}"/>
</Grid>
</Border>
</Window>
看起来好像您真正想要创建一个新的
面板
,或者从现有面板派生出来,取代当前的网格
<“代码>面板”负责布局您的内容,所以您应该这样做,而不是乱动窗口。测量覆盖率
您希望您的TextBlock
水平增长的具体方式是什么?为什么要这样?通过水平增长,您希望它也增长窗口吗?是的,窗口也需要水平增长。它应该首先垂直增长的原因是,指令与对话框的面板内容一样宽,除非必要,否则面板内容不需要增长。如果对话框窗口不再垂直增长,文本块将水平增长。