Onay kutusunun sol tarafındaki onay kutusu içeriğini (metin) koymanın en kolay yolu nedir? kodundaWPF'deki onay kutusunun solundaki metin
cevap
LeftToRight
içeriğe sahip bir RightToLeft
onay kutusunu yapmaktır "kolaylık" ve "doğruluğunu" maksimize bir çözüm TextBlock orada yerleştirebilirsiniz:
<CheckBox FlowDirection="RightToLeft">
<TextBlock FlowDirection="LeftToRight" Text="CheckBox Content:" />
</CheckBox>
Yoksa bir stil isterseniz:
<Style TargetType="CheckBox">
<Setter Property="FlowDirection" Value="RightToLeft" />
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl FlowDirection="LeftToRight" Content="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
: XAML içinde
System.Windows.Controls.CheckBox checkBox = new System.Windows.Controls.CheckBox();
checkBox.Content = ":CheckBox Enabled";
checkBox.FlowDirection = System.Windows.FlowDirection.RightToLeft;
:
<CheckBox FlowDirection="RightToLeft" Content=":CheckBox Enabled" />
DÜZENLEME
punker76 o nokta üst üste fark bana yardımcı Kullanıcı ":" yerler olmak zorunda Infront metnin doğru olarak görüntülenmesini, sonunda ("CheckBox Enabled:"), muhtemelen bir etki akışı yönünden kaynaklanan metin öğesinde var. Güzel yakalayış.
. Bunun nedeni, CheckBox'ı oluşturan tüm bileşenlerin FlowDirection özelliğini miras almasıdır. Çözüm burada açıklanmıştır: [link] (http://stackoverflow.com/questions/20911471/wpf-button-icon-gets-mirrored-why/20912496#20912496) –
@ punker76 Aynı sorun ": ABC neden olur msgstr "ABC:" olarak gösterilecek. ContentPresenter'ın FlowDirection öğesini LeftToRight olarak ayarlamak, metni soldan sağa komut dosyaları için beklendiği gibi yapar. –
başka yolu da yeni bir özel stile yapmaktır
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<SolidColorBrush Color="#F4F4F4"
x:Key="CheckBoxFillNormal" />
<SolidColorBrush Color="#8E8F8F"
x:Key="CheckBoxStroke" />
<Style x:Key="EmptyCheckBoxFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="1"
SnapsToDevicePixels="true"
Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
StrokeDashArray="1 2"
StrokeThickness="1" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="CheckRadioFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="14,0,0,0"
SnapsToDevicePixels="true"
Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
StrokeDashArray="1 2"
StrokeThickness="1" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type CheckBox}"
x:Key="ContentLeftCheckBoxStyle">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
<Setter Property="Background"
Value="{StaticResource CheckBoxFillNormal}" />
<Setter Property="BorderBrush"
Value="{StaticResource CheckBoxStroke}" />
<Setter Property="BorderThickness"
Value="1" />
<Setter Property="FocusVisualStyle"
Value="{StaticResource EmptyCheckBoxFocusVisual}" />
<Setter Property="VerticalContentAlignment"
Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<StackPanel Orientation="Horizontal">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
<BulletDecorator Background="Transparent"
SnapsToDevicePixels="true"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<BulletDecorator.Bullet>
<Microsoft_Windows_Themes:BulletChrome Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
IsChecked="{TemplateBinding IsChecked}"
RenderMouseOver="{TemplateBinding IsMouseOver}"
RenderPressed="{TemplateBinding IsPressed}" />
</BulletDecorator.Bullet>
</BulletDecorator>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="HasContent"
Value="true">
<Setter Property="FocusVisualStyle"
Value="{StaticResource CheckRadioFocusVisual}" />
<Setter Property="Padding"
Value="0,0,4,0" />
</Trigger>
<Trigger Property="IsEnabled"
Value="false">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
kullanımı: yardımcı
<CheckBox Style="{StaticResource ContentLeftCheckBoxStyle}" Content="CheckBox:" />
umut!
Sanırım hepimiz bu cevabın farkındaydık ve bu problemi çözmenin doğru yolu olduğunu biliyoruz, ama "en kolay" yol sadece akış yönünü değiştirmektir. :) –
@LepiPerke tamam, soldaki ":" ile bu iyi :-) – punker76
Bu cevap gerçekten doğru olarak işaretlenmiş olmalıdır. Tüm doğru şeyleri yapar ve ters çevrilmiş onay işaretleriyle ve tersine çevrilmiş metinle ilgili bir problemi yoktur. FlowDirection kullanımını savunan yanıt, karakter sırası ve simetrik olmayan onay işaretleri için tutarlı bir şekilde çalışmaz. –
Onay kutusu şablonu düzenleyebilir ve üzerinde önde dikdörtgenin
Başka geçici çözümü, ince sorunlar di önlemek için Tamamen yeni bir CheckBox stili tanımlarken akış yönü ve kod büyük miktarda ile scussed, sadece bir Label (istenilen CheckBox içerik dizesi ile) içeren bir WrapPanel ve bir CheckBox (hiçbir içerik dizisi olmadan) kullanmaktır.
<WrapPanel>
<Label Content="Checkbox content"/>
<CheckBox VerticalAlignment="Center" Margin="5,0,0,0"/>
</WrapPanel>
kolay yolu yığın paneli kullanmaktır: Ben bunun için iki saat geçirdim
<StackPanel Orientation="Horizontal">
<TextBlock Text="Some Text"/>
<CheckBox />
</StackPanel>
Eğer metin – failedprogramming
olay işleyicileri ile başa çıkabilirken kontrol etmek için işaretleme/işaretini kaldırma yeteneğini kaybetme sakıncası yoksa bu tamam – simonalexander2005
, ama en iyi kararı
<Style x:Key="TextAlignLeft" TargetType="CheckBox">
<Style.Resources>
<Style TargetType="Path">
<Setter Property="FlowDirection" Value="LeftToRight" />
</Style>
<Style TargetType="TextBlock">
<Setter Property="FlowDirection" Value="LeftToRight" />
</Style>
</Style.Resources>
<Setter Property="FlowDirection" Value="RightToLeft" />
</Style>
Ben bir süre oldu biliyorum bulundu ve Geciktim. Ancak bazı karmaşık cevaplardan geçtikten ve internette çok fazla arama yaptıktan sonra, here işaretini bozmadan bunu başarmanın en kolay yolunu buldum.
<CheckBox Content="Checked" FlowDirection="RightToLeft">
<CheckBox.Resources>
<Style TargetType="{x:Type Path}">
<Setter Property="FlowDirection" Value="LeftToRight" />
</Style>
</CheckBox.Resources>
</CheckBox>
Sonuç: sizin onay işareti yatay olarak çevrilir alır, en azından bir vuruş dizisi olarak uygulanır: Bu bir sorun var
- 1. Cocoa'da bir onay kutusunun durumu
- 2. Bir onay kutusunun pyqt
- 3. değiştirilmesi f.select onay kutusunun
- 4. Metin kutusunun genişliğini kilitleme
- 5. Metin kutusunun sayısı sabitlenmezken, metin kutusunun sayısı dinamik olarak oluşturulmuş formdan nasıl elde edilir
- 6. </ a0> onay kutusunun içinde onay kutusu
- 7. Metin eklerken bir metin kutusunun kaydırılmasını engelle
- 8. Kesilmiş onay kutusunun araç ipucunu gizle
- 9. Materialize çerçevesindeki onay kutusunun rengini değiştirme
- 10. onay kutusunun etrafında noktalı çizgi nasıl önlenir?
- 11. Onay kutusunun kimliğini aldınız mı? - jQuery
- 12. Onay kutusunun işaretli olup olmadığını kontrol edin
- 13. Açısal: Kontrol edildiğinde onay kutusunun değerlerinin alınması
- 14. JQuery bir giriş onay kutusunun yanındaki metni seçin.
- 15. Onay Kutusu Metin l metnine uymuyor
- 16. Bir onay kutusunun altındaki bir metnin sarılmasını engelle
- 17. Asp metin kutusunun tuş olayı nasıl yapılır?
- 18. Liste kutusunun öğelerini bir metin dosyasına kaydetme
- 19. Uyarı iletişim kutusunun metin rengini değiştirme
- 20. İçeriği olmayan bir metin kutusunun JQuery klonu
- 21. Dart'ta bir metin kutusunun değerini nasıl ayarlayabilirim?
- 22. Vue.js yük açık metin kutusunun üzerinde
- 23. metin kutusunun dize içerip içermediğini kontrol edin
- 24. Bir winform metin kutusunun içindeki düğme
- 25. VisualBrush içindeki bir metin kutusunun genişliğini bağlama
- 26. Hangi metin kutusunun boş olduğunu bulma
- 27. jquery Mobile: onay kutusunun işaretli olup olmadığını kontrol edin
- 28. En az bir onay kutusunun işaretlendiğinden emin olun
- 29. Onay kutusunun bir sınıfı olup olmadığını kontrol edin ve
- 30. SQLFORM fabrikasında, neden okunduğum onay kutusunun işareti kaldırılmıyor?
Söylemeliyim, evet, bu gerçekten kolay ... – punker76
Bu sebepten dolayı, bu onay işaretini gliflendiren (* not: * .NET 4.5) onay işaretini döndürür. En iyi bahis orijinal stilin bir kopyasını düzenlemek ve bunu işlemek için şablonu özelleştirmek olacaktır. – erodewald
Bazı insanlar varsayılan 'CheckBox' stilinin bir kopyasının nasıl elde edileceğinin farkında olmayabilirler, benim uygulamamı (ekli özellikleri kaldıran) bir [gist] 'e atmaya karar verdim (https://gist.github.com/** "CheckBox" stilini içeren "generic/be2aa4a6d2d82739b835)" ControlTemplate.Triggers "bazı küçük değişiklikler ile. Çözümünüzde – erodewald