RichText에서 HTML을 표시할 수 있는 방법에 대해 설명해놓은 글입니다.

물론 샘플 소스도 같이 있습니다.

https://www.codeproject.com/Articles/1097390/Displaying-HTML-in-a-WPF-RichTextBox


소스를 다운로드해서 샘플을 켜보면 RichText에 TextBox의 Text로 바로 바인딩을 걸어놔서, HTML 문법오류가나면, 바로 프로그램이 죽습니다.

그래서 생성자에 바로 HTML을 입력하고 테스트해보았습니다.






핵심은  HtmlConverter에서 HTML 분석기를 만들어 HtmlToXamlConveter를 호출한다는 겁니다.

FlowDocument 를 만들어서 입력하게끔하네요. 


RTF문서 만들고, 입력내용에 대해 수정하기가 쉽지않은데...

HTML로 하니 간편한 듯합니다..

유용하네요.



MainWindow.xaml


<Window x:Class="RichTextBlockSample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:RichTextBlockSample"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Title="HTML TextBlock sample"
        Width="400"
        Height="300"
        mc:Ignorable="d">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <TextBox Name="TextBox"
                 Margin="10,0"
                 HorizontalAlignment="Stretch"
                 VerticalAlignment="Center"
                 Text=""
                 TextWrapping="Wrap" />
        <RichTextBox Grid.Row="1"
                     local:HtmlRichTextBoxBehavior.Text="{Binding ElementName=TextBox, Path=Text}"
                     IsDocumentEnabled="True"
                     IsReadOnly="True" />
        <!--
        <WebBrowser Grid.Row="2"
                    local:WebBrowserBehavior.Body="{Binding ElementName=TextBox, Path=Text}" />-->
    </Grid>
</Window>



MainWindows.xaml.cs

using System.Windows;
using System.Windows.Controls;

namespace RichTextBlockSample
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
	{
		public MainWindow()
		{
			InitializeComponent();

            TextBox.Text = "<span style=\"color:red; font-size:20px; font-weight:bold\">hello</span>";
            TextBox.Text += "<span style=\"color:blue; font-size:20px; font-weight:bold; font-family:aria\">world</span>";
            TextBox.Text += "<span style=\"color:green; font-size:20px; font-weight:bold; font-family:nanumgothic\">안녕하세요</span>";
        }
	}
}


라이센스 : https://www.codeproject.com/info/cpol10.aspx 보니 소스 재배포가 가능해서 파일 첨부합니다.


RichTextBlockSample.zip



'C#' 카테고리의 다른 글

GDI+ Bitmap Rotaion  (0) 2019.02.19
WPF RichText에서 HTML 표시하기  (0) 2019.02.09
Visual Studio Debug.WriteLine 표시가 안될때 대처 방안  (0) 2018.11.15
WPF, Template Select 하기  (0) 2018.05.29
WPF MVVM 샘플코드  (0) 2018.05.28
doxygen 설치 및 설정  (0) 2018.05.14

1. 빌드하는 모드가 Debug모드인지 확인할 것.


2. 도구 / 옵션 / 디버깅 / 일반에 출력 창의 모든 텍스트를 [직접실행]창으로 리다이렉션 체크해제 확인

(Menu > tools > options > debugging > General > Redirect all output window text to the immediate window (NOT Checked)






2. 프로젝트 설정 페이지에서 빌드, 설정은 빌드, DEBUG 상수 정의, TRACE 상수 정의 확인 

(Project Properties > Build > Define DEBUG constant / Defile TRACE constatnt are all checked.




3. 출력 창에서 마우스 오른쪽 버튼 눌러 프로그램 출력 체크 확인 (이걸 몰라서 헤멨다 아오..)




4. 기타 App.config 에 이런거 있어도 안되고.

  <system.diagnostics>

    <trace>

      <listeners>

        <!-- This next line is the troublemaker. If it is there delete it-->

        <clear/>

      </listeners>

    </trace>

  </system.diagnostics>





'C#' 카테고리의 다른 글

GDI+ Bitmap Rotaion  (0) 2019.02.19
WPF RichText에서 HTML 표시하기  (0) 2019.02.09
Visual Studio Debug.WriteLine 표시가 안될때 대처 방안  (0) 2018.11.15
WPF, Template Select 하기  (0) 2018.05.29
WPF MVVM 샘플코드  (0) 2018.05.28
doxygen 설치 및 설정  (0) 2018.05.14

집에서 사용하고 있던 스마트 플러그가 갑자기 고장이 났습니다.

스마트폰용 앱이 UI가 참 맘에 들어 몇개월간 잘 사용하고 있었는데. 고장이 나더군요.


 


 

 

 


증상은 앱으로 표시 및 제어어도 잘 되는 듯 한데...  실제 릴레이가 작동하지 않고 계속 전원이 연결되는 문제였습니다.

H모사의 제품이었는데, 인터넷을 검색해보니 저 말고도 그러한 사례가 종종 있는 듯 했습니다.


고객센터에 글을 남길까.. 하다가, 아래 글을 보고 제품에 여러차례 충격을 가해보았습니다.

그러니 어찌 첨에 안된다가 다시 몇번 치니까 고쳐지더군요.

붙었던 릴레이를 물리적으로 떼내는 일을 하는 듯 했습니다.


릴레이 접점이 붙었다가 떨어지지 않는 고장사례는 종종 있는 듯 했습니다...



그런데, 한편 생각해보니. 이건 진짜 위험하다 싶더군요.

특히 온열제품일 경우, 제대로 제어되지 않는 다면, 화재까지 이어질 수 있는 상황이구요...

전원에 제어가 제대로 되지 않았다는 피드백이 전달되지 않은 것도 문제를 키울 듯 했습니다.


제가 우선 내린 결론은 사용 전력치가 큰 제품에는 물려서 쓰지 말자(헤어드라이기등) 입니다.

아무래도 릴레이 고장 원인은 거기서 비롯되는게 큰 것 같았습니다.

 

 

 

스마트 플러그인 고장 관련 글들...

 

 

 


 

 

 

 

 

+ Recent posts