Q&A
前提・実現したいこと
初めて投稿させて頂きます。
質問に際して至らぬ点ありましたら、ご指摘いただけると助かります。
よろしくお願い致します。
【質問内容】
WPFを利用して画面作成を行っています。
XAMLでの記述方法がわからなくて困っています。
やろうとしていることは、
● ControlTemplateを使用したTextBoxのスタイルを用意し(waterMark付・・・ネット上で調べて参考)、スタイルを継承
● 継承先ではStyle.Triggersを追加(特定の条件時にTextBoxのBackgroundを変える)
下記ソースでコメント部分をはずし継承をなくせば想定通りの挙動を示しますが、冗長化するのでベースを残して必要なところだけStyleの継承をして実現したい。
発生している問題・エラーメッセージ
Style.Triggersで変更されない
該当のソースコード
<Style x:Key="Watermark_TextBox" TargetType="{x:Type TextBox}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type TextBox}"> <Grid Background="White"> <TextBox> <TextBox.Resources> <Style TargetType="{x:Type TextBox}"> <Setter Property="BorderThickness" Value="2"></Setter> <!-- <Style.Triggers> <DataTrigger Binding="{Binding IsChecked, ElementName=radio1}" Value="True"> <Setter Property="Background" Value="LightYellow" ></Setter> </DataTrigger> </Style.Triggers> --> </Style> <Style TargetType="{x:Type Border}"> <Setter Property="CornerRadius" Value="5"/> </Style> </TextBox.Resources> </TextBox> <ScrollViewer x:Name="PART_ContentHost" Margin="5,0,10,0" VerticalAlignment="Center"/> <TextBlock x:Name="waterMarkLabel" Text="{TemplateBinding Tag}" Opacity=".5" FontStyle="Italic" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="5,0,10,0" Visibility="Collapsed"/> </Grid> <ControlTemplate.Triggers> <Trigger Property="Text" Value=""> <Setter Property="Visibility" TargetName="waterMarkLabel" Value="Visible"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style BasedOn="{StaticResource Watermark_TextBox}" x:Key="TableFormatSelected_TextBox" TargetType="{x:Type TextBox}"> <Style.Triggers> <DataTrigger Binding="{Binding IsChecked, ElementName=radio1}" Value="True"> <Setter Property="Background" Value="LightYellow" ></Setter> </DataTrigger> </Style.Triggers> </Style>
試したこと
名前を付けたりKeyを設定してみたり試行錯誤してみましたが、うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
特になし
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2019/03/13 07:23
2019/03/13 07:36
2019/03/14 00:56