Как предотвратить автоматическое изменение размера в пользовательском конструкторе действий?

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

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

Я установил MinWidth, MaxWidth и Margin для ExpressionTextBoxes так, чтобы они соответствовали другим элементам управления, а в конструкторе Visual Studio (просматривая пользовательский конструктор действий, а не фактический 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. Когда редактирование заканчивается, оно возвращается к MaxWidth. Я бы предпочел, чтобы он оставался того же размера, независимо от того, находится он в режиме редактирования или нет.

Небольшая демонстрация проблемы.

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

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

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

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

Обновить

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


person Lars Kristensen    schedule 09.08.2011    source источник


Ответы (1)


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>

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

person Maurice    schedule 09.08.2011
comment
Для столбца, содержащего ExpressionTextBoxes, ширина была установлена ​​на Auto. Я пробовал установить для него * или фиксированное значение, и хотя это влияет на саму сетку, ExpressionTextBoxes по-прежнему сжимаются при редактировании. - person Lars Kristensen; 09.08.2011
comment
@LarsKristensen: Вы пробовали установить Width ETB? - person ; 09.08.2011
comment
Я пробовал установить ширину, но это тоже не помогло. Я обнаружил, что если удалить свойство HorizontalAlignment = Right, проблема исчезнет. На самом деле, если бы я установил для HorizontalAlignement что-либо иное, кроме Stretch, он бы сжал. Но я хочу, чтобы мой ETB (и все остальное в этом столбце) было выровнено по левому краю. Есть ли способ сделать это, не устанавливая его непосредственно в элементе управления, или мне нужно настроить свойство Margin, чтобы оно соответствовало другим элементам управления? (У меня есть несколько других ETB в свернутых необязательных настройках) - person Lars Kristensen; 09.08.2011
comment
Я не знаю, имеет ли это значение, но действия с их дизайнерами используются в повторно размещенном дизайнере WorkFlow. Могут ли какие-либо настройки или свойства в этом конструкторе WF повлиять на мой конструктор действий? (Повторно размещенный дизайнер WF не был разработан мной, но при необходимости я могу получить доступ к проекту) - person Lars Kristensen; 09.08.2011