Я пытаюсь реализовать решение Watermark для своих ComboBoxes, которые я нашел где-то в Интернете (я не могу найти страницу снова), но у меня проблемы со связыванием. Исходное решение имело статический текст, который я хотел бы заменить, используя привязку к свойству Tag ComboBoxes.WPF Binding Style.Trigger To Parent
Это то, что я до сих пор:
<Grid>
<Grid.Resources>
<VisualBrush x:Key="Watermark" TileMode="None" Opacity="0.4" Stretch="None" AlignmentX="Left">
<VisualBrush.Visual>
<TextBlock FontStyle="Italic" Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}, Path=Tag}"/>
</VisualBrush.Visual>
</VisualBrush>
<Style TargetType="ComboBox" BasedOn="{StaticResource {x:Type ComboBox}}">
<Setter Property="Margin" Value="5"/>
<Setter Property="IsEditable" Value="False"/>
<Setter Property="IsReadOnly" Value="True"/>
<Style.Triggers>
<Trigger Property="Text" Value="">
<Setter Property="Background" Value="{DynamicResource Watermark}"/>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ComboBox Grid.Column="0" ItemsSource="{Binding Categories}" Tag="Categories"/>
<ComboBox Grid.Column="1" ItemsSource="{Binding SubCategories}" Tag="SubCategories"/>
<ComboBox Grid.Column="2" ItemsSource="{Binding Whatever}" Tag="Whatever"/>
К сожалению, это выглядит как часть "FindAncestor" не работает. Может ли кто-нибудь сказать мне, почему?
Заранее благодарен!
Я не понимаю вашу первую точку, потому что если я заменил RelativeSource-Binding на какой-то жесткий код, это сработает ...? – MemphiZ
Для меня это не так. Если это имеет значение, вы должны опубликовать полный образец для демонстрации. – JeffRSon
lol теперь это смешно. Я создал образец проекта, который не показывал водяной знак. После того, как я добавил пакет MahApps.Metro nuget и скорректировал стили в App.xaml, он работает. Они должны каким-то образом реализовать это поведение. К сожалению, я все еще не могу сопоставить свойство Binding to the Tag из ComboBoxes. В любом случае вы можете найти решение здесь: https://www.dropbox.com/s/eb219vbqdo2co45/WpfApplication1.7z?dl=1 – MemphiZ