我有一個自定義的工具提示,我試圖去設計風格。我有以下幾種:可見性取決於綁定值
<UserControl.ToolTip>
<StackPanel>
<TextBlock Text="{Binding Path=ToolPrototype.TypeName}" MaxWidth="200" FontWeight="Bold" TextWrapping="Wrap"></TextBlock>
<TextBlock Text="{Binding Path=ToolPrototype.Description}" MaxWidth="200" TextWrapping="Wrap"></TextBlock>
<TextBlock Text="{Binding Path=ToolPrototype.Note}" MaxWidth="200" FontWeight="Regular" FontStyle="Italic" TextWrapping="Wrap"></TextBlock>
</StackPanel>
</UserControl.ToolTip>
這很直截了當。標題將會大膽。描述將是常規的字體重量,'note'將以斜體顯示。問題是,並非我所有的ToolPrototypes都將.Note作爲成員(基本上爲null)。我的一些工具包含一個分配給Note屬性的字符串值,但不是全部。因此,在筆記爲空的情況下,我仍然在我的工具提示中看到一個空白區域(實際上它就像一個空白行)。如果ToolPrototype實際上已經定義了音符屬性,我想要做的只是包含該行。否則,省略它。所以,我認爲我所追求的是試圖有條件地檢查綁定是否存在......但也許這不是正確的思考方式。任何人可以提供一些指導?
更新
工作過灰的建議下,我試圖用DataTriggers工作。這是我現在擁有的。
<UserControl.ToolTip>
<StackPanel>
<TextBlock Text="{Binding Path=ToolPrototype.TypeName}" MaxWidth="200" FontWeight="Bold" TextWrapping="Wrap"></TextBlock>
<TextBlock Text="{Binding Path=ToolPrototype.Description}" MaxWidth="200" TextWrapping="Wrap"></TextBlock>
<TextBlock MaxWidth="200" Text="{Binding Path=ToolPrototype.Note}" FontWeight="Regular" FontStyle="Italic" TextWrapping="Wrap">
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ToolPrototype.Note}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</StackPanel>
</UserControl.ToolTip>
但是,這並沒有建立,並說成員「可見性」不承認。任何人都可以指出我的錯誤嗎?
@ASh是對的。如果出現這種情況,您還可以編寫一個'NullToVisibilityConverter'來節省XAML中的混亂:' ' –
I按照ASh的建議,按照觸發方式。習慣了這一點,無需爲轉換器實現所有功能(請注意,有時轉換器仍然是最佳解決方案,具體取決於您的方案的複雜性) – Dbl
感謝您的支持!但是,我在提供的鏈接中丟失了什麼?我似乎沒有看到他們的數據觸發器的任何答案。 – andyopayne