2
我想突出顯示標籤,當關聯的文本框有焦點。這個作品:WPF:如何在目標文本框具有焦點時設置標籤樣式?
<Label Grid.Row="1" Grid.Column="0" Target="{Binding ElementName=CountryCode}">
<Label.Style>
<Style TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=CountryCode, Path=(IsFocused)}" Value="True">
<Setter Property="Foreground" Value="Blue" />
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
<AccessText Text="{Binding Path=CountryCodeLabel}" />
</Label>
<TextBox Grid.Row="1" Grid.Column="1" Name="CountryCode" Text="{Binding Path=CountryCode}" />
但我有一堆這些文本框,所以我寧願模板樣式。這工作:
<Style x:Key="HighlightOnFocus" TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=CountryCode, Path=(IsFocused)}" Value="True">
<Setter Property="Foreground" Value="Blue" />
</DataTrigger>
</Style.Triggers>
</Style>
...
<Label Grid.Row="1" Grid.Column="0" Style="{StaticResource HighlightOnFocus}">
<AccessText Text="{Binding Path=CountryCodeLabel}" />
</Label>
<TextBox Grid.Row="1" Grid.Column="1" Name="CountryCode" Text="{Binding Path=CountryCode}" />
但當然我不能硬編碼的ElementName在那裏。所以我試過了:
<Style x:Key="HighlightOnFocus" TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=(IsFocused)}" Value="True">
<Setter Property="Foreground" Value="Blue" />
</DataTrigger>
</Style.Triggers>
</Style>
...
<Label Grid.Row="1" Grid.Column="0" Style="{StaticResource HighlightOnFocus}" DataContext="{Binding ElementName=CountryCode}">
<AccessText Text="{Binding Path=CountryCodeLabel}" />
</Label>
<TextBox Grid.Row="1" Grid.Column="1" Name="CountryCode" Text="{Binding Path=CountryCode}" />
但是在標籤中設置DataContext會混淆我的AccessText元素中的綁定。所以問題是 - 是否有一種方式以某種方式指定樣式datatrigger的元素名稱,而不是設置datacontext?有沒有更好的方法來完成我想要做的事情?
我不不知道爲什麼語法突出顯示不起作用,即使我手動添加了標記。無論如何,解決方案工作:) – Roemer 2017-03-09 08:27:30