我希望你能解决我的问题。它是关于WF 4.0活动的自定义设计器,但问题主要在于设计器的WPF。 一些背景
我已经创建了一个自定义的WorkFlow活动来发送电子邮件。对于活动的自定义设计器,我以前一直使用常规Textboxes作为电子邮件的“主题”和“正文”,但我想使用ExpressionTextBox轻松地将它绑定到活动的InArguments 。 ExpressionTextBox位于网格中,此网格位于StackPanel上。
我已经设置了ExpressionTextBoxes的MinWidth,MaxWidth和Margin以适应其他控件,并且在Visual Studio Designer中(查看自定义活动设计器,而不是实际的WorkFlow)一切看起来都应该如此。
<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" />
问题
使用时,最初它看起来也应该如此,但是当编辑ExpressionTextBox时,它们会变得非常小。输入文本时,控件将展开以适合文本,直到达到其MaxWidth。编辑结束时,它会返回到MaxWidth。我更喜欢它是否保持相同的大小,无论是否处于编辑模式。
如果看不到,请打开图片here
我尝试了什么
我大部分都在做WinForms,而且我对WPF缺乏经验,所以我不知道是否有一些我错过的时髦属性或其他设置。我已经尝试设置父控件的宽度属性(StackPanel和Grid),我尝试设置宽度(没有最小值/最大值),但无论我设置什么,它似乎都会缩小。
如果您想了解更多信息或代码,请不要犹豫。
更新
正如您在Maurices回答的评论中所看到的,我想出了如何通过删除horizontalAlignment属性,然后使用边距将其对齐到右边来避免此问题。但是我不打算给出答案,直到有一个解释为什么这种行为首先发生。我的XAML几乎与Maurice发布的相同,所以其他地方一定有问题。
答案 0 :(得分:0)
ExpressionTextBox的XAML对我来说很好看,当我尝试以下设计器时,它工作得很好。
<sap:ActivityDesigner x:Class="WorkflowConsoleApplication2.MyActivityDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation"
xmlns:sapc="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation">
<sap:ActivityDesigner.Resources>
<sapc:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
</sap:ActivityDesigner.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<Label Content="Subject"
Grid.Row="2"
Grid.Column="0"/>
<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" />
</Grid>
</sap:ActivityDesigner>
所以我怀疑问题可能在您的网格定义中。