체크 박스 내용 (텍스트)을 체크 상자의 왼쪽에 넣는 가장 쉬운 방법은 무엇입니까? 코드에서WPF의 체크 상자 왼쪽에 텍스트가 있습니까?
답변
LeftToRight
내용으로 RightToLeft
체크 박스를 만드는 것입니다 "용이"와 "정확성"을 극대화 솔루션 TextBlock의이 배치 할 수 있습니다 :
<CheckBox FlowDirection="RightToLeft">
<TextBlock FlowDirection="LeftToRight" Text="CheckBox Content:" />
</CheckBox>
을
또는 당신은 스타일을 원한다면 :
<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에서
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" />
편집
punker76가 콜론을 주목 도와주었습니다 사용자는 ":"장소이어야한다 뿅 끝에 정확하게 표시 할 텍스트 ("CheckBox Enabled :"), 영향을주는 흐름 방향에 의해 아마도 텍스트 요소에 발생합니다. 멋지다.
. 이것은 CheckBox를 구성하는 모든 구성 요소가 FlowDirection 속성을 상속하기 때문에 발생합니다. 해결책은 여기에 설명되어 있습니다. [link] (http://stackoverflow.com/questions/20911471/wpf-button-icon-gets-mirrored-why/20912496#20912496) –
@ punker76 같은 문제로 인해 ": ABC "를"ABC : "로 표시합니다. ContentPresenter의 FlowDirection을 LeftToRight로 설정하면 왼쪽에서 오른쪽으로 스크립트에 대해 텍스트가 예상대로 표시됩니다. –
또 다른 방법은 새 사용자 지정 스타일을 만드는 것입니다
<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>
사용 : 도움이
<CheckBox Style="{StaticResource ContentLeftCheckBoxStyle}" Content="CheckBox:" />
희망!
우리 모두는 그 해답을 알고 있었고이 문제를 해결하는 것이 올바른 방법이라는 것을 알고 있습니다. 그러나 "가장 쉬운"방법은 흐름 방향을 바꾸는 것입니다. :) –
@LepiPerke 좋아요, 왼쪽의 ":"은 괜찮습니다 :-) – punker76
이 답변은 실제로 올바른 것으로 표시되어야합니다. 모든 올바른 작업을 수행하며 뒤집힌 체크 표시와 뒤집힌 텍스트에는 아무런 문제가 없습니다. FlowDirection의 사용을 옹호하는 답변은 문자 순서 및 비대칭 체크 표시에 대해 일관되게 작동하지 않습니다. –
당신은 체크 박스 템플릿을 편집 할 수 있습니다 이상 앞서 사각형의
다른 해결 방법, 미묘한 문제 디를 방지하기를 흐름 방향과 완전히 새로운 CheckBox의 스타일을 형성 코드 다량 상기 scussed 단 (소망의 CheckBox 콘텐츠 문자열) 라벨을 함유하는 WrapPanel 및 (NO 내용 캐릭터)와, 체크 박스를 사용하는 것이다.
<WrapPanel>
<Label Content="Checkbox content"/>
<CheckBox VerticalAlignment="Center" Margin="5,0,0,0"/>
</WrapPanel>
가장 쉬운 방법은 스택 패널을 사용하는 것입니다 : 나는 그것을 2 시간을 보냈다
<StackPanel Orientation="Horizontal">
<TextBlock Text="Some Text"/>
<CheckBox />
</StackPanel>
텍스트를 클릭 할 때 확인/선택 취소하는 기능을 잃어도 상관이 없다면 괜찮을 것 같습니다. – failedprogramming
이벤트 핸들러는이 문제를 처리 할 수 있습니다. – simonalexander2005
을,하지만 난 최선의 결정
<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>
나는 그것이 오랜만이야 알을 발견하고 나는 늦었다. 그러나 몇 가지 복잡한 답변을 통과하고 인터넷에서 많은 것을 검색 한 후에 나는 진드기를 here에서 왜곡하지 않고 이것을 달성하는 가장 간단한 방법을 마침내 발견했습니다.
<CheckBox Content="Checked" FlowDirection="RightToLeft">
<CheckBox.Resources>
<Style TargetType="{x:Type Path}">
<Setter Property="FlowDirection" Value="LeftToRight" />
</Style>
</CheckBox.Resources>
</CheckBox>
결과 : 당신의 틱 마크가 수평으로 이성을 상실됩니다, 적어도 뇌졸중 배열로 구현이 문제가 있습니다
- 1. UITableViewCell의 왼쪽에 체크 표시를하십시오.
- 2. 체크 박스의 "상자"를 움직일 수 있습니까?
- 3. WPF의 ScrollViewer의 대화 상자
- 4. ComboBox 내의 체크 상자 WPF
- 5. 체크 박스 값을 WPF의 텍스트 상자 값에 따라 결정합니다.
- 6. WPF의 텍스트 상자 - 추가는
- 7. 목록 상자 WPF의 MousedoubleClick
- 8. 왼쪽에 uibutton 이미지가 있고 가운데에 텍스트가 있습니다.
- 9. WPF의 다중 행 콤보 상자 컨트롤
- 10. iOS UITableViewCell 액세서리가 왼쪽에 있습니까?
- 11. wpf의 텍스트 상자 유효성 확인
- 12. WPF의 메시지 상자 및 DataTemplates는
- 13. wpf의 체크 박스에 데이터 바인딩
- 14. 텍스트 상자 - wpf의 편집 스타일
- 15. WPF의 목록 상자 항목에 키보드 포커스
- 16. 그룹화 된 WPF의 목록 상자
- 17. 메시지 디스플레이 상자 텍스트가
- 18. WPF의 텍스트 상자 키 이벤트
- 19. WPF의 콤보 상자에있는 텍스트 상자
- 20. 체크 상자 대신 체크 상자를 체크 표시합니다.
- 21. 클릭하면 텍스트 상자 텍스트가 사라집니다.
- 22. 왼쪽에서 오른쪽으로 글자 상자 입력 "-"왼쪽에
- 23. 체크 박스 텍스트가 보이지 않습니다.
- 24. 체크 박스와 함께 텍스트가 표시됩니다.
- 25. C# 체크 상자 - 이걸 정리할 수 있습니까?
- 26. WPF 체크 상자 컨트롤 토글 이벤트가 있습니까?
- 27. Google지도보기가 왜 왼쪽에 있습니까?
- 28. 스윙에서 텍스트가 바뀌는 대화 상자
- 29. ListView에 메서드를 출력하여 WPF의 체크 상자를 바인딩합니다.
- 30. WPF의 목록 상자에있는 체크 박스에 액세스
나는 그 말이 정말 쉽다는 것을 말해야한다 ... – punker76
어떤 이유로 든,이 해결책을 쓸모 없게하는 체크 표시 문자 (* note : * .NET 4.5)를 뒤집는다. 가장 좋은 방법은 원본 스타일의 사본을 편집하고 템플릿을 사용자 정의하여이 문제를 처리하는 것입니다. – erodewald
일부 사람들은 기본 'CheckBox'스타일의 사본을 얻는 방법을 모를 수도 있기 때문에 첨부 된 속성을 활용하는 구현을 [요점] (https://gist.github.com)에 포기하기로 결정했습니다./gen3ric/be2aa4a6d2d82739b835). 여기에는 ** Full ** CheckBox' 스타일과 'ControlTemplate.Triggers'에 약간의 수정이 포함되어 있습니다. – erodewald