2013-06-11 1 views
0

나는 스타일을 확장하고 validationresult가 true이면 툴팁 메시지를 추가하기 위해 다음과 같은 방법을 시도했습니다. 하지만 "속성 스타일이 두 번 이상 설정되었습니다."라는 오류가 표시됩니다. 이 경우 스타일을 확장하려면 어떻게해야합니까? 어떤 도움을 주시면 감사하겠습니다. 감사.wpf로 스타일 확장하기

<TextBox Width="500" Style="{StaticResource HasInvalidValue}"> 
       <TextBox.Text> 
        <Binding Path="Text" UpdateSourceTrigger="PropertyChanged"> 
         <Binding.ValidationRules> 
          <Validator:PathFormatValidationRule/> 
         </Binding.ValidationRules> 
        </Binding> 
       </TextBox.Text> 
       <TextBox.Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource HasInvalidValue}"> 
        <Style> 
         <Setter Property="ToolTip" Value="Enter Text."/> 
        </Style> 
       </TextBox.Style> 
      </TextBox> 

그리고 스타일은 다음과 같이 정의된다 :

<Style x:Key="HasInvalidValue" TargetType="{x:Type TextBox}"> 
    <Style.Triggers> 
     <Trigger Property="Validation.HasError" Value="true"> 
      <Setter Property="Background" Value="White"/> 
      <Setter Property="ToolTip" 
      Value="{Binding RelativeSource={x:Static RelativeSource.Self}, 
          Path=(Validation.Errors)[0].ErrorContent}"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

'스타일'을 두 번 설정하고 '정적 리소스'에 바인딩 한 다음 수동으로 조금 더 아래로 설정합니다. 또한, 두 번째 스타일 지정에서 'Tooltip.Value'를 하드 코딩 된 값으로 덮어 씁니다.이 값은 의미가 없습니다. –

+0

요소 자체에서 스타일 지정을 제거합니다 (Style = "{StaticResource HasInvalidValue}"). BasedOn 스타일로 파생 된 스타일이 자동으로 적용됩니다. – Viv

+0

바인딩을 제거하고 적용했습니다. 나는 textbox.style 대신에 basedon을 스타일로 바 꾸었습니다. 그것은 효과가 있었다. 감사 :) –

답변

2

첫째는

<TextBox Style="{StaticResource HasInvalidValue}" ... 
... 
</TextBox> 

에 설정 한 다음 텍스트 상자 요소에서

<TextBox.Style ... 
</TextBox.Style> 

는 스타일 속성을 제거한다.