2011-08-09 30 views
1

私の問題を助けてくれることを願っています。 WF 4.0アクティビティのカスタムデザイナーについてですが、この問題は基本的にデザイナーのWPFにあります。 バックグラウンドカスタムアクティビティデザイナで自動サイズ変更を防止する方法は?

私は電子メールを送信するためのカスタムWorkFlowアクティビティを作成しました。アクティビティのカスタムデザイナーは、以前は電子メールの "Subject"と "Body"に通常のTextboxを使用していましたが、ExpressionTextBoxを使用してそのアクティビティのInArgumentsに簡単にバインドしたいと思います。 ExpressionTextBoxはグリッド内にあり、このグリッドはStackPanel上にあります。

ExpressionTextBoxの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" /> 

問題

使用する場合は、最初に、それはまたそれが必要として見えるが、ExpressionTextBoxesを編集しているとき、彼らは本当に小さなことに縮みます。テキストが入力されると、コントロールはテキストがMaxWidthに達するまで展開されます。編集が終わると、それはMaxWidthに戻ります。私は編集モードであるかどうかに関わらず、同じサイズのままであれば好きです。

Small demonstration of the problem.

あなたがそれを見ることができない場合は、here

画像を開いて、私は

を試してみた私は、主にリサイズを行ってきた、と私はかなり経験の浅いですよWPFを使用しているので、私が見逃したいくつかのファンキーなプロパティやその他の設定があるかどうかはわかりません。親コントロール(StackPanelとGrid)の幅プロパティを設定しようとしましたが、幅(最小/最大)を設定しようとしましたが、設定した値に関係なく縮小するようです。

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

更新

あなたはMauricesの答えにコメントして見ることができるように、私はたHorizo​​ntalAlignmentプロパティを削除した後、右に整列するためにマージンを使用して問題を回避する方法を考え出しました。しかし、なぜこの現象が最初に起こったのかの説明があるまで、私は答えに印をつけません。私のXAMLはMauriceが投稿したものとほとんど同じだったので、別の場所で何かが間違っているはずです。

答えて

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> 

この問題は、おそらくグリッド定義にあると思われます。

+0

ExpressionTextBoxを含む列の幅は「自動」に設定されていました。私はそれを "*"または固定値に設定しようとしましたが、これはグリッド自体に影響を与えますが、ExpressionTextBoxesは編集中に縮小します。 –

+0

@LarsKristensen:ETBの「幅」を設定しようとしましたか? – Will

+0

私は幅を設定しようとしましたが、トリックもしませんでした。Horizo​​ntalAlignment = "Right"プロパティを削除すると、問題が解決されたことがわかりました。実際に、「ストレッチ」以外にHorizo​​ntalAlignementを設定すると、縮小が行われます。しかし、私はETB(とその列にあるすべてのもの)を左に揃えたい。コントロールに直接設定しないでこれを行う方法はありますか、他のコントロールに合わせてMarginプロパティを微調整する必要がありますか? (私はいくつかの他のETBを折りたたまれた "Optional settigns"に持っています) –

関連する問題