wpf에서 데이터 펀드 할 때 텍스트 블록을 완전히 대담하게 설정하십시오.

StackOverflow https://stackoverflow.com/questions/506521

문제

데이터 바운드 텍스트 블록 컨트롤 (ListBox에 항목을 표시하기 위해 DataTemplate 내부에 사용되고 있음)이 있으며 모든 텍스트를 제어 굵게 표시하고 싶습니다. 속성 탐색기에서 전체 텍스트를 대담하게 설정할 속성을 찾을 수없는 것 같습니다. 온라인에서 찾을 수있는 것은 <Bold> TextBlock 내부의 태그는 데이터 소스에서 직접 데이터가 나오면이를 넣을 수 없습니다.

이 작업을 수행하는 방법이 있어야하지만 어떻게해야합니까? 나는 WPF에서 매우 경험이 없어서 어디를 볼지 모르겠습니다.

도움이 되었습니까?

해결책

내가 무언가를 놓치고 있습니까?

<TextBlock FontWeight="Bold" Text="{Binding Foo}" />

다른 팁

텍스트 블록을 갖지 않고 이것을 시도하십시오.

<TextBlock>
  <Bold>
    <Run />
  </Bold>
</TextBlock>

그런 다음 run.textProperty 대신 Databind.

데이터가 데이터 소스에서 직접 나오고 있다고 말합니다. 추상화 층을 앞에 놓을 수 있습니까? 당신이 표시하는 내용에 대한보기를 만들고보기가 데이터와 통신하도록하는 것이 매우 일반적입니다. 이 아이디어의 가장 일반적인 구현은 MVM (Model View-Model)입니다. 온라인으로 읽으십시오.

텍스트 상자에 바인딩되는 'displayText'속성이있을 수 있으며 단순히 기본 텍스트를 감싸는 'getter'입니다. 텍스트가 이미 래핑되어 있는지 여부를 감지 할 수 있고 그렇지 않은 경우 포장 할 수 있습니다.

예를 들어.

public class TestView {
  private Test datasource;
  public TestView(Test source)
  { 
     this.datasource = source;
  }

   public string DisplayText {
     get {
       if (datasource.Text.Contains("<bold>")==false) {
           return "<bold>" + datasource.Text + "</bold>";
       }
       return datasource.Text;
     }
   }
}

그런 다음 객체에 직접 대신보기에 바인딩하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top