我希望你能帮助我解决我的问题。它是关于 WF 4.0 活动的自定义设计器,但问题本质上在于设计器的 WPF。 一些背景
我创建了一个自定义工作流活动来发送电子邮件。对于活动的自定义设计器,我以前一直使用常规文本框作为电子邮件的“主题”和“正文”,但我想使用 ExpressionTextBox 轻松地将其绑定到活动的 InArguments . ExpressionTextBoxes 在一个网格中,这个网格在 StackPanel 上。
我已经设置了 ExpressionTextBoxes 的 MinWidth、MaxWidth 和 Margin 以适应其他控件,并且在 Visual Studio 设计器中(查看自定义活动设计器,而不是实际的工作流),一切看起来都应该如此。
<sapv:ExpressionTextBox Grid.Column="1" Grid.Row="2" Height="Auto" HorizontalAlignment="Right" Margin="4, 4, 4, 4"
Expression="{Binding Path=ModelItem.Subject, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In}"
ExpressionType="{x:Type TypeName=sys:String}" OwnerActivity="{Binding Path=ModelItem}" VerticalAlignment="Center" MaxWidth="176" MinWidth="175" />
问题
使用时,最初它看起来也应该如此,但是当编辑 ExpressionTextBoxes 时,它们会缩小到非常小。输入文本时,控件会展开以适合文本,直到达到其 MaxWidth。当编辑结束时,它会回到它的 MaxWidth。无论是否处于编辑模式,我都希望它保持相同的大小。
如果看不到,请在此处打开图片
我试过的
我大部分时间都在做 WinForms,而且我对 WPF 非常缺乏经验,所以我不知道是否有一些我错过的时髦属性或其他设置。我试过设置父控件(StackPanel 和 Grid)的宽度属性,我试过只设置宽度(没有最小值/最大值),但无论我设置什么,它似乎都会缩小。
如果您想了解更多信息或代码,请随时询问。
更新
正如您在对 Maurices 答案的评论中看到的那样,我想出了如何通过删除 HorizontalAlignment 属性,然后使用边距将其与右侧对齐来避免该问题。但我不会标记答案,直到首先解释为什么会发生这种行为。我的 XAML 与 Maurice 发布的几乎相同,因此其他地方肯定有问题。