自分のフォームで自分のラベルスタイルを動的に変更しようとしています。 私がしたい振る舞いは:例えば、「txtName」というテキストボックスがFocusedになるたびに、「lblName」という名前のLabel Controlを検索し、FontWeightプロパティを「Bold」に変更する必要があります。一部のコントロールのトリガで、「ダイナミック」名前の別のコントロールのプロパティを変更する
'txtBirthday'という名前のテキストボックスと 'lblBirthday'というラベルの場合は同じです。ここで、 'txt'はTextBox、Labelはlblです。
すべてのテキストボックスには、対応するラベルのNAMEと接頭辞「txt」と接頭辞「lbl」がありますが、テキストボックスで対応するラベルが見つからない場合は何もしないでください。
つまり、テキストボックスがフォームに集中するたびに、説明のために「responsable」というラベルを検索し、フォントの太さを太字に変更してフォームをユーザーフレンドリーにする必要があります。そうすれば、ユーザーは入力したテキストボックスを混乱させることはありません。
私は多分良いスタートポイントであるとは言い難いコードですが、非静的なコントロール名を扱う方法はわかりません。上記のコメントで述べたよう
<Style TargetType="{x:Type Label}">
<Style.Triggers>
<!-- Here is how we bind to another control's property -->
<DataTrigger Binding="{Binding IsFocused, ElementName=txtUser}" Value="True">
<Setter Property="FontWeight" Value="Bold" />
<!-- Here is the 'override' content -->
</DataTrigger>
</Style.Triggers>
</Style>
XAMLで変数を使用できるようにはならないと思います。 gotfocusとフォーカスを失ったイベントハンドラを配置します。 – Paparazzi
あなたの例はより複雑な設定の簡素化ですか?行動を変えるために名前を一致させることはお勧めできません。このアプローチは脆弱で、拡大縮小しません。これらは、より強固な他の組み込みの代替(コントロールテンプレート、ユーザーコントロールなど)です。 –
@BalamBalam、いくつかのコントロールがあります。私はこれを行う巨大な仕事を持っています。それらをグローバルに定義する方法はありますか? –