WPF 단추 텍스트 래핑 스타일
WPF에서 단추의 기본 텍스트 래핑 스타일을 변경하려면 어떻게 해야 합니까?
다음의 명백한 솔루션:
<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
<Setter Property="TextWrapping" Value="Wrap"></Setter>
</Style>
문자 래핑은 여기서 설정 가능한 자산이 아니기 때문에 작동하지 않습니다.
내가 시도하는 경우:
<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<TextBlock Text="{Binding}" Foreground="White" FontSize="20" FontFamily="Global User Interface" TextWrapping="Wrap"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
나는 단지 컴파일러로부터 쓸모없는 응답을 받았을 뿐입니다.
Error 5 After a 'SetterBaseCollection' is in use (sealed), it cannot be modified.
ControlTemplate 태그를 제거하면 오류가 유지됩니다.
다음 시도는 다른 오류를 발생시킵니다.
<Setter Property="TextBlock">
<TextBlock Text="{Binding}" Foreground="White" FontSize="20" FontFamily="Global User Interface" TextWrapping="Wrap"/>
</Setter>
Error 5 The type 'Setter' does not support direct content.
버튼별로 개별적으로 문자 포장을 설정할 수 있는 것은 알지만, 그것은 꽤 괜찮은 일입니다.스타일로 어떻게 해야 하나요?마법의 단어는 무엇입니까?
그리고 나중에 참고할 수 있도록, 제가 어디서 이 마법 단어들의 목록을 찾을 수 있을까요? 그래서 저는 이것을 혼자서 할 수 있을까요?설정자가 설정할 수 있는 속성을 찾으려 할 때 MSDN 항목은 꽤 쓸모가 없습니다.
예를 들어 에릭의 대답을 확장하기 위해:-
<Button Name="btnName" Width="50" Height="40">
<TextBlock Text="Some long text" TextWrapping="Wrap" TextAlignment="Center"/>
</Button>
나는 이 문제를 추가함으로써 해결했습니다.TextBlock
단추로, 그리고 단추의 텍스트 대신 단추 텍스트를 표시하기 위해 사용합니다.Content
소유물.설정해야 합니다.TextBlock
의 높이 속성Auto
텍스트 줄 수에 맞게 높이를 조절할 수 있습니다.
두 번째 버전은 텍스트 블록 텍스트 바인딩을 변경해야 한다는 주의 사항과 함께 작동해야 합니다.
<!-- in Window.Resources -->
<Style x:Key="fie" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<TextBlock Text="{TemplateBinding Content}" FontSize="20" TextWrapping="Wrap"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- then -->
<Button Style="{StaticResource fie}">verylongcaptiongoeshereandwraps/Button>
버튼 스타일을 완전히 대체합니다. 즉, 원하는 경우 직접 버튼 크롬을 만들어야 합니다.
두 번째 질문과 관련하여 모든 쓰기 가능한 종속성 속성은 세터를 사용하여 설정할 수 있습니다.스타일을 통해 버튼에 TextWraping을 설정할 수 없었던 이유는 버튼에 TextWraping 종속성 속성(또는 실제로는 TextWraping 속성)이 없기 때문입니다."마법의 단어"는 없고 종속성 속성의 이름만 있습니다.
<Style TargetType="Button">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{TemplateBinding Content}" TextWrapping="Wrap" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
다음은 C# 코드백으로 작성된 Eric의 답변 예입니다.
var MyButton = new Button();
MyButton.Content = new TextBlock() {
FontSize = 25,
Text = "Hello world, I'm a pretty long button!",
TextAlignment = TextAlignment.Center,
TextWrapping = TextWrapping.Wrap
};
@fadden의 코멘트로 @Rob의 답변을 확장하려면:
<Button Width="50" Height="40">
<AccessText Text="_Some long text" TextWrapping="Wrap" TextAlignment="Center"/>
</Button>
TextBlock 컨트롤은 키보드 단축키(_)를 지원하지 않습니다.
언급URL : https://stackoverflow.com/questions/754137/wpf-button-textwrap-style
'programing' 카테고리의 다른 글
갈퀴 작업에서 일찍 돌아오려면 어떻게 해야 합니까? (0) | 2023.06.11 |
---|---|
새 행을 삽입할 때 수식을 다음 행에 복사 (0) | 2023.06.11 |
문자열 및 변수 내용을 동일한 줄에 R로 인쇄 (0) | 2023.06.11 |
물체를 파괴하는 방법 (0) | 2023.06.11 |
SQL을 통해 기능 이미지가 포함된 워드프레스 게시물 검색 (0) | 2023.06.11 |