2015-01-28 1 views
4

XAML에서 RunStyle 확정 기 내에서 정의 할 수 있습니까?WPF 스타일 설정 기의 다중 실행 요소

다음은 두 Run '의 정의들과 실패

속성'이 값이 '한 번 이상 설정되어 있습니다. 여러 Run 년대의 사용을 유지하면서

<TextBlock> 
    <TextBlock.Style> 
     <Style TargetType="{x:Type TextBlock}"> 
       <Setter Property="Text"> 
        <Setter.Value> 
         <Run Text="{Binding SelectedItem.iso}"/> 
         <Run Text="{Binding SelectedItem.value}"/> 
        </Setter.Value> 
       </Setter> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding SelectedItem.type}" Value={x:Null}"> 
         <Setter Property="Text" Value="No value" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 

이 고정 될 수 있는가?

+0

스타일 설정자가 여러 값을 허용하더라도이 기능은 작동하지 않습니다. 다중 실행은 TextBlock의 'Text' 속성 대신'Inlines' 속성으로 설정됩니다. 그러나,'Inlines'은 의존성 프로퍼티가 아니기 때문에 스타일 세터에 의해 설정 될 수 없습니다. – Clemens

+0

체크 아웃 : http://stackoverflow.com/questions/11197474/textblock-style-triggers 두 가지 옵션이 있습니다. –

답변

2

Setter는 하나의 속성에서만 작동하므로 하나의 값만 가질 수 있습니다. 오류는 논리적입니다. 사용자가하려는 것을 이해할 방법이 없으며 속성을 설정할 수 있습니다. 주어진 값.

그래서이 값은 다음과 같이 지정해야합니다. 추가 된 텍스트. 이렇게하려면, 당신은 당신이 그것을 줄 여러 값을 사용하고 StringFormat에 따라 하나를 반환 MultiBinding을 사용합니다 :

<Setter.Value> 
    <MultiBinding StringFormat="{}{0}{1}{2}"><!-- Format as you wish --> 
     <Binding Path="SelectedItem.iso"/> 
     <Binding Source="{x:Static System:Environment.NewLine}"/> 
     <Binding Path="SelectedItem.value"/> 
    </MultiBinding> 
</Setter.Value> 

참고있는 StringFormat에 : 당신은 괄호를 탈출 시작 {}을 사용해야합니다, 그렇지 않으면 마크 업 확장 스타터로 간주 할 것입니다.