1

あなたが私の問題で私を助けてくれることを願っています。これは、WF 4.0アクティビティのカスタムデザイナーに関するものですが、問題は基本的にデザイナーのWPFにあります。 いくつかの背景

電子メールを送信するためのカスタムワークフローアクティビティを作成しました。アクティビティのカスタムデザイナでは、以前は電子メールの「件名」と「本文」に通常のテキストボックスを使用していましたが、ExpressionTextBoxを使用してアクティビティのInArgumentsに簡単にバインドしたいと思います。 。ExpressionTextBoxesはグリッド内にあり、このグリッドはStackPanel上にあります。

ExpressionTextBoxesのMinWidth、MaxWidth、およびMarginを他のコントロールに合うように設定しました。また、Visual Studio Designer(実際のワークフローではなくカスタムアクティビティデザイナーを表示)では、すべてが正常に表示されます。

<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に戻ります。編集モードであるかどうかに関係なく、同じサイズのままであることが望ましいです。

問題の小さなデモンストレーション。

見えない場合はこちらの画像を開いてください

私が試したこと

私は主にWinFormsを使用しており、WPFの経験がかなり少ないので、見逃したファンキーなプロパティやその他の設定があるかどうかはわかりません。親コントロール(StackPanelとGrid)のwidth-propertiesを設定しようとしましたが、幅だけ(最小/最大なし)を設定しようとしましたが、何を設定しても縮小するようです。

さらに詳しい情報やコードが必要な場合は、遠慮なくお問い合わせください。

アップデート

Mauricesの回答へのコメントでわかるように、horizo​​ntalAlignmentプロパティを削除し、マージンを使用して右に揃えることで、問題を回避する方法を見つけました。しかし、そもそもなぜこの振る舞いが起こったのかについての説明があるまで、私は答えをマークするつもりはありません。私のXAMLはMauriceが投稿したものとほとんど同じだったので、他の場所に何か問題があるはずです。

4

1 に答える 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>

したがって、問題はおそらくグリッド定義にあると思われます。

于 2011-08-09T10:59:55.717 に答える