몇 개의 텍스트 상자가 있고 워터 마크가있는 스타일을 사용하고 싶습니다 (예 : 입력란에 'First Name Here Here'라는 텍스트가 포함될 것입니다.)스타일 속성을 바인딩하는 방법은 무엇입니까?
일반적으로 RelativeSource 바인딩을 사용했지만 스타일에 포함 된 Label이 어떤 바인딩도 허용하지 않는 이상한 버그가 발생했습니다. 예를 들어, 다음과 같은 바인딩 모든 곳에서 작동하지만 라벨의 내용 : 여기에 참고로
{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=Title}
내가 작업하고있는 코드입니다.
텍스트 상자의 XAML :
<TextBox x:Name="textBox_test" Style="{StaticResource textBoxStyle_watermark}" ToolTip="Hello"
스타일의 XAML :
<Style x:Key="textBoxStyle_watermark" TargetType="TextBox" xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Style.Resources>
<VisualBrush x:Key="CueBannerBrush" AlignmentX="Left" AlignmentY="Center" Stretch="None">
<VisualBrush.Visual>
<Label Padding="10,0,0,0" Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ToolTip}" Foreground="Gray" />
</VisualBrush.Visual>
</VisualBrush>
</Style.Resources>
<Style.Triggers>
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</Trigger>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Background" Value="{StaticResource CueBannerBrush}" />
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter Property="Background" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
어떤 도움을 주시면 감사하겠습니다, 감사합니다.
ControlTemplate에 대해 알려 주셔서 감사합니다. 워터 마크 문제가 해결되었지만 탭 컨트롤에 문제가 발생했습니다. 나는 그것을 다른 질문으로 제출할 것이다. – user3275129