Как предотвратить автоматическое изменение размеров в конструкторе пользовательских действий? - PullRequest
1 голос
/ 09 августа 2011

Я надеюсь, что вы можете помочь мне с моей проблемой. Речь идет о собственном конструкторе для действий WF 4.0, но проблема, по сути, заключается в WPF дизайнера. Некоторый фон

Я создал пользовательское действие WorkFlow для отправки электронных писем. Для пользовательского дизайнера для действия, я ранее использовал обычные текстовые поля для «Тема» и «Тело» электронной почты, но я хотел бы использовать ExpressionTextBox, чтобы легко связать его с InArguments действия , Ящики ExpressionTextBox находятся в сетке, и эта сетка находится в StackPanel.

Я установил MinWidth, MaxWidth и Margin ExpressionTextBoxes, чтобы они соответствовали другим элементам управления, а в 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" />

Проблема

При использовании изначально он также выглядит так, как и должен, но при редактировании ExpressionTextBoxes они становятся очень маленькими. Когда текст вводится, элемент управления расширяется до размера текста, пока не достигнет максимальной ширины. Когда редактирование заканчивается, оно возвращается к MaxWidth. Я бы предпочел, чтобы он оставался одинаковым, независимо от того, находится он в режиме редактирования или нет.

Small demonstration of the problem.

Если вы его не видите, откройте изображение здесь

Что я пробовал

В основном я занимался WinForms, и я довольно неопытен с WPF, поэтому я не знаю, есть ли какие-нибудь прикольные свойства или другие настройки, которые я пропустил. Я попытался установить свойства width родительских элементов управления (StackPanel и Grid), я попытался установить только ширину (без min / max), но, похоже, она уменьшается независимо от того, что я установил.

Если вам нужна дополнительная информация или код, пожалуйста, не стесняйтесь спрашивать.

Обновление

Как вы можете видеть в комментариях к ответу Мориса, я выяснил, как избежать проблемы, удалив свойство horizontalAlignment, а затем используя поля для выравнивания по правому краю. Но я не собираюсь отмечать ответ, пока нет объяснения, почему это поведение произошло в первую очередь. Мой XAML был почти идентичен тому, что написал Морис, поэтому в другом месте должно быть что-то не так.

1 Ответ

0 голосов
/ 09 августа 2011

XAML для ExpressionTextBox выглядит хорошо для меня, и когда я пробую следующий дизайнер, он работает просто отлично.

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

Так что я подозреваю, что проблема, возможно, в определении вашей сетки.

...