我在完全按照我的需要設定 TextBox 時遇到了問題。我在這里閱讀了類似的問題,但沒有一個和我有相同的要求。
基本上我需要帶有一些 MaxWidth 的文本框來始終嘗試適應 MaxWidth 屬性。如果用戶改變了視窗的大小,它應該根據需要縮小,或者增大到 MaxWidth。但同時,我需要將它對齊到左側,以創建這種外觀:

但是當我將 Horizo??ntalAlignment 設定為“Left”時 - 文本框會根據內部值更改寬度。當我將 Horizo??ntalAlignment 設定為“拉伸”時,文本框位于螢屏中間,而不是按鈕旁邊的左側。
我需要這兩個屬性的某種組合,但我不知道該怎么做。
我不使用 GridColumns 作為我的布局,因為還有其他問題,因此我無法創建我想要的結果。
這是我的 ButtonEdit 的示例 - 這是帶按鈕的 TextBox:
<dxe:ButtonEdit
x:Name="SearchPanel"
Margin="52,4,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
NullText="Zadejte hledany text.."
Height="23" MaxWidth="200" AllowDefaultButton="False"
Grid.Row="0">
<dxe:ButtonEdit.Buttons>
<dxe:ButtonInfo
...
</dxe:ButtonInfo>
<dxe:ButtonInfo
...
</dxe:ButtonInfo>
</dxe:ButtonEdit.Buttons>
</dxe:ButtonEdit>
有人能幫助我嗎?
謝謝你。
uj5u.com熱心網友回復:
您應該能夠使用https://stackoverflow.com/a/280402/19496 中的解決方案并將其包裝在具有最大列寬的單個單元格網格中。
也就是說,像這樣:
<Grid Grid.Row="0" VerticalAlignment="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MaxWidth="200"/>
</Grid.ColumnDefinitions>
<dxe:ButtonEdit
x:Name="SearchPanel"
Margin="52,4,0,0"
NullText="Zadejte hledany text.."
Height="23" AllowDefaultButton="False">
<dxe:ButtonEdit.Buttons>
<dxe:ButtonInfo
...
</dxe:ButtonInfo>
<dxe:ButtonInfo
...
</dxe:ButtonInfo>
</dxe:ButtonEdit.Buttons>
</dxe:ButtonEdit>
</Grid>
問題是這HorizontalAlignment="Stretch"總是意味著以控制元件為中心(據我所知)。大多數時候無關緊要,除非,例如,與MaxWidth.
網格列的行為略有不同,即使在被告知占用所有可用空間(即拉伸)時,也保持在網格中左對齊Width="*"。
uj5u.com熱心網友回復:
好的,我設法解決了這個問題,訣竅是使用系結在運行時計算 With。當我使用 DevExpress 控制元件時,這是解決方案:
Width="{DXBinding '@a($Grid).ActualWidth - 50'}"
或者沒有 DevExpress - 這也應該有效:
{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType=Grid}, Converter={local:WidthConverter}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/372433.html
上一篇:帶有AvalonDock對接布局系統的Wpf應用程式
下一篇:ValueError:無法為形狀為“(20,200)”的張量“Placeholder:0”提供形狀(20,3000)的值
