2
我有一個網格,其中包含許多標籤,組合框和文本框。 我在每個單元格中都放置了標籤和組合框。wpf Grid最佳實踐
什麼是最好的做法: 1.將組合框和一個堆疊面板的標籤,然後把它放在一個單元2簡單地說這兩個控件直接在網格單元
有哪些優勢和兩種方法的缺點?
謝謝
我有一個網格,其中包含許多標籤,組合框和文本框。 我在每個單元格中都放置了標籤和組合框。wpf Grid最佳實踐
什麼是最好的做法: 1.將組合框和一個堆疊面板的標籤,然後把它放在一個單元2簡單地說這兩個控件直接在網格單元
有哪些優勢和兩種方法的缺點?
謝謝
在同一小區內將兩者一起控制的缺點是,第二個將在第一(你會注意到,如果你嘗試過)之上進行疊加,並解決這個問題的唯一方法就是給予他們奇異的利潤或者將他們都放在StackPanel
之中,這就是爲什麼每個人都把他們放在StackPanel
之中。
我的建議是:定義一個樣式,如下圖所示,並把它列入App.xaml
一些全球性的東西(或App.xaml
本身,如果你在心靈的海盜框架是):
<Style x:Key="FieldStyle" TargetType="HeaderedContentControl">
<Setter Property="Margin" Value="8,3" />
<Setter Property="MinWidth" Value="300" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="HeaderedContentControl">
<StackPanel Orientation="Vertical">
<Label
FontWeight="Bold"
Content="{TemplateBinding Header}"
/>
<ContentPresenter
Margin="8,0,0,0"
/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
並且像這樣使用它:
<HeaderedContentControl
Header="Contact Name"
Grid.Row="0"
Grid.Column="0"
Style="{StaticResource FieldStyle}"
>
<TextBox Text="{Binding ContactName}" />
</HeaderedContentControl>
<HeaderedContentControl
Header="Contact Phone"
Grid.Row="1"
Grid.Column="0"
Style="{StaticResource FieldStyle}"
>
<TextBox Text="{Binding ContactPhone}" />
</HeaderedContentControl>
這可以讓您輕鬆地更改所有標籤/控件對的格式。我通常只是在我自己的StackPanel
或WrapPanel
這些東西一巴掌,但如果一個Grid
是有意義的佈局,通過一切手段去與它。
該風格的模板可以和可以證明應該是TemplateBinding
比它更多的東西,但我厭倦了打字,它已經得到了我實際上要使用的所有東西。