首页 文章

如何防止自定义活动设计器中的自动调整大小?

提问于
浏览
1

我希望你能解决我的问题 . 它是关于WF 4.0活动的自定义设计器,但问题主要在于设计器的WPF . Some background

我已经创建了一个自定义的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" />

The problem

使用时,最初它看起来也应该如此,但是当编辑ExpressionTextBox时,它们会变得非常小 . 输入文本时,控件将展开以适合文本,直到达到其MaxWidth . 编辑结束时,它会返回到MaxWidth . 我更喜欢它是否保持相同的大小,无论是否处于编辑模式 .

Small demonstration of the problem.

如果看不到,请打开图片here

What I've tried

我大部分都在做WinForms,而且我对WPF缺乏经验,所以我不知道是否有一些我错过的时髦属性或其他设置 . 我已经尝试设置父控件(StackPanel和Grid)的宽度属性,我尝试设置宽度(没有最小/最大),但无论我设置什么,它似乎都缩小了 .

如果您想了解更多信息或代码,请不要犹豫 .

Update

正如您在Maurices回答的评论中所看到的,我想出了如何通过删除horizontalAlignment属性,然后使用边距将其对齐到右边来避免此问题 . 但是我不打算给出答案,直到有一个解释为什么这种行为首先发生 . 我的XAML几乎与Maurice发布的相同,所以其他地方一定有问题 .

1 回答

  • 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>
    

    所以我怀疑问题可能在你的网格定义中 .

相关问题