我希望你能幫我解決我的問題。它是關於WF 4.0活動的自定義設計器,但問題主要在於設計人員的WPF中。 一些背景如何防止自定義活動設計器中的自動調整大小?
我創建了一個定製的WorkFlow活動來發送電子郵件。對於活動的自定義設計器,我以前一直使用正常的文本框作爲電子郵件的「主題」和「主體」,但我想使用ExpressionTextBox輕鬆地將其綁定到活動的InArguments 。 ExpressionTextBoxes位於網格中,並且此網格位於StackPanel上。
我已經設置了ExpressionTextBoxes的MinWidth,MaxWidth和Margin以適應其他控件,並且在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。無論處於編輯模式還是不處於編輯模式,我都希望它保持相同的大小。
如果你不能看到它,打開圖像here
我已經試過
我大部分時間在做的WinForms,我敢缺乏經驗與WPF,所以我不知道是否有一些時髦的屬性或我錯過了其他設置。我試着設置父控件的寬度屬性(StackPanel和Grid),我試着設置寬度(沒有最小/最大),但它似乎縮小,無論我設置了什麼。
如果你想了解更多信息或代碼,請不要猶豫,問。
更新
正如你可以在評論Maurices的回答看,我想通了,如何通過移除HorizontalAlignment屬性,然後用利潤,將其調整到右邊來避免此問題。但是我不打算給出答案,除非有解釋爲什麼這種行爲首先發生。我的XAML與Maurice發佈的內容幾乎完全相同,因此其他地方一定有問題。
對於包含ExpressionTextBoxes的列,寬度設置爲「Auto」。我已經嘗試將其設置爲「*」或固定值,雖然這對網格本身有影響,但ExpressionTextBoxes在編輯時仍會縮小。 –
@LarsKristensen:你有沒有試過設置ETB的'Width'? – Will
我試過設置寬度,但它也沒有這樣做。我發現如果我刪除了HorizontalAlignment =「Right」屬性,問題就消失了。實際上,如果我將HorizontalAlignement設置爲「Stretch」以外的任何其他值,它將會縮小。但是我希望我的ETB(以及該列中的所有內容)與左側對齊。有沒有辦法做到這一點,而不是直接在控件上設置它,還是我必須微調保證金屬性以適應其他控件? (我有幾個其他的ETB在摺疊的「可選定位符」中) –