RichTextBox
과 ComboBox
이 포함 된 Grid로 구성된 매우 간단한 WPF 창을 만들었습니다. 나는 RichTextBox
선택의 폰트 크기를 바꾸고 찾아보기 위해 ComboBox
을 사용합니다.ComboBox를 통한 RichTextBox Selection의 글꼴 크기 변경이 제대로 작동하지 않습니다.
MyTextBox_SelectionChanged
은 선택의 글꼴 크기와ComboBox
를 업데이트 : 여기에 두 가지가 있습니다public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // Add the font sizes. for (var i = 1; i < 72; i++) { FontSize.Items.Add((double) i); } } private void MyTextBox_SelectionChanged(object sender, RoutedEventArgs e) { // If the selection changes, update the font size in the ComboBox. FontSize.SelectedValue = (double) MyTextBox.Selection.GetPropertyValue(TextBlock.FontSizeProperty); } private void FontSize_SelectionChanged(object sender, SelectionChangedEventArgs e) { // If the selected size changes, change the size of the selection in the RichTextBox. if (FontSize.SelectedItem != null) MyTextBox.Selection.ApplyPropertyValue(TextBlock.FontSizeProperty, FontSize.SelectedItem); } }
:
여기 내 XAML의 코드 숨김 파일입니다.
FontSize_SelectionChanged
은 선택 항목의 글꼴 크기를 변경합니다.
당신은 아래의 문제를 볼 수 있습니다
내가 선택하고 글꼴 크기를 변경, 그것은 완벽하게 변경합니다. 그러나 다른 글꼴 크기로 다른 텍스트를 클릭하는 순간 다시 바뀝니다.
이 동작의 원인은 무엇입니까? 편집
:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ComboBox x:Name="FontSize" HorizontalAlignment="Left" VerticalAlignment="Top" Width="497" Margin="10,10,0,0" SelectionChanged="FontSize_SelectionChanged"/>
<RichTextBox x:Name="MyTextBox" HorizontalAlignment="Left" Height="273" VerticalAlignment="Top" Width="497" Margin="10,37,0,0" RenderTransformOrigin="0.358,0.48" SelectionChanged="MyTextBox_SelectionChanged">
<FlowDocument>
<Paragraph>
<Run Text="RichTextBox"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
</Grid>
</Window>
편집 : 2 : 여기는 XAML 파일의 여기에 내가 한 일의 짧은 설명이 때 나는 그것을 디버깅 된 두 디버그 포인트는
- 있습니다 하나는
MyTextBox_SelectionChanged
이고 하나는FontSize_SelectionChanged
입니다. - 글꼴 크기를 변경하면 F5를 클릭하고 계속 진행합니다.
- 기본 크기를 가진 텍스트의 다른 부분을 클릭하면
MyTextBox_SelectionChanged
이 호출됩니다.Selection.Text
이 비어 있습니다. - 그런 다음 다시 전화를 걸어
FontSize_SelectionChanged
으로 전화하십시오. 그러나 여전히Selection.Text
은 비어 있지만 이전의 "Rich"선택 항목은 이전 글꼴 크기로 되돌아갑니다.
편집 3 :이 문제는 2008 년 7 월 Sams Teach Yourself WPF in 24 Hours 처음으로 인쇄에서 언급, 135 페이지, "을 예상대로 텍스트 편집기 작업 만들기"항목 9.이 설명을 이해하고 창조하지 않았다 특정 문제를 보여주는 짧은 샘플.
게시 한 코드는 (적어도 내 컴퓨터에서는) 언급 한 문제를 일으키지 않습니다. 그래서 문제를 일으키는 다른 코드입니다. 또한 MyTextBox_SelectionChanged 코드와 다른 문제가 있습니다. 사용자가 글꼴 크기가 여러 개인 텍스트 (예 : RichTex)를 선택하면 예외가 발생합니다. – publicgk
@publicgk : 문제를 일으킬 수있는 다른 코드는 없습니다. 'MainWindow.xaml'은'FontSize'라는 이름의 ComboBox와'MyTextBox'라는 이름의 RichTextBox가 있습니다. 그리고 내가 게시 한 것은 네임 스페이스 선언을 제외하고'MainWindow.xaml.cs' 파일에있는 모든 것입니다. 이 문제는 제가 읽고있는 책에서 언급 되었기 때문에 아무런 문제가 발생하지 않을 것 같지 않습니다. 그리고 책의 설명을 이해할 수 없기 때문에 여기에서 설명했습니다. – hattenn
@publicgk : 그리고이 문제를 언급하기 위해이 코드를 특별히 작성했기 때문에 언급 한 다른 문제는 문제가되지 않습니다. 그것보다 다른 어떤 상황도 처리하지 않았다. – hattenn