我正試圖爲我的ComboBoxes實現一個水印解決方案,我在網上找到了某處(我找不到該頁面),但遇到綁定問題。原來的解決方案有靜態文本,我想用ComboBoxes Tag屬性的綁定替換。WPF綁定樣式。觸發父項
這是我到目前爲止有:
<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
哈哈,現在這很有趣。我創建了一個沒有顯示水印的示例項目。在添加MahApps.Metro nuget包並調整App.xaml中的樣式後,它可以工作。他們必須以某種方式實施這種行爲。不幸的是,我仍然無法將綁定映射到組合框的標籤屬性。無論如何,你可以在這裏找到解決方案:https://www.dropbox.com/s/eb219vbqdo2co45/WpfApplication1.7z?dl=1 – MemphiZ