WPF UserControl'üm iki yığın paneli içerir ve bunların her biri etiket, metin kutusu ve radyo düğmelerini içerir.
Center
için VerticalAlignment
özelliğini UserControl'teki tüm denetimlere mümkün olduğunca az kodla ayarlamak istiyorum.VerticalAlignment özelliğini tüm denetimlere ayarlama
Şimdi aşağıdaki çözümleri vardır:
- kaba kuvvet -
FrameworkElement
için bir stil tanımlayabilir ve- kullanıcı kumanda üzerindeki kontrollerin her türü için stiller tanımlamak doğrudan geçerli olduğu her kontrolde
VerticalAlignment="Center"
koymak (Bu 3 stil tanımlamasına gereksinim duyar, ancak stili otomatik olarak kontrole uygular)
Bu üç çözümün çok fazla kod gerektirmesi gerekir.
Bunu yazmanın başka bir yolu var mı?
FrameworkElement
için tanımlama stilinin özelliği otomatik olarak özelliği tüm denetimlere ayarlayacağını umdu, ancak çalışmaz. İşte
(Ben ikinci çok benzer yığın paneli atlanmıştır) benim şimdiki XAML snippet'idir:
<UserControl.Resources>
<Style x:Key="BaseStyle" TargetType="FrameworkElement">
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</UserControl.Resources>
<Grid>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource BaseStyle}" Text="Value:" />
<RadioButton Style="{StaticResource BaseStyle}">Standard</RadioButton>
<RadioButton Style="{StaticResource BaseStyle}">Other</RadioButton>
<TextBox Style="{StaticResource BaseStyle}" Width="40"/>
</StackPanel>
</Grid>
Düzenleme:
Re Will'in comment: Gerçekten codebehind kod biçimlendirme kontrolünü yazma fikrinden nefret . Bu gerçekten basit kullanıcı kontrolü için XAML yeterli olmalıdır.
Re nereye Muad'Dib comment: Benim kullanıcı denetiminde kullanmak Kontroller FrameworkElement
türetilmiştir, bu nedenle bu burada bir sorun değildir.
olacaktır: Bu "en iyi" yoludur, ancak baz tarzı miras sayfadaki her denetim için ayrı stiller yaratarak ardından taban stilini tanımlayan ve tarafından yönetmek kolay oldu emin değilim arkasından gelen kodlar, düşündüğüm kadar tuhaf bir fikir olabilir mi? –
tüm denetimler FrameworkElement –