У меня есть настраиваемая подсказка, которую я пытаюсь создать. У меня есть следующее:Видимость в зависимости от значения привязки
<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>
Это довольно прямолинейно. Заголовок будет выделен жирным шрифтом. Описание будет регулярным шрифтом шрифта, а «примечание» будет выделено курсивом. Проблема в том, что не все мои ToolPrototypes имеют .Note как член (это в основном null). Некоторые из моих инструментов включают строковое значение, которое присваивается свойству Note, но не все. Итак, в тех случаях, когда примечание равно null, я все еще получаю пустую область в своей всплывающей подсказке (по сути, это как пустая строка). То, что я хотел бы сделать, это включить только эту строку, если на ToolPrototype на самом деле определено свойство заметки. В противном случае опустите его. Итак, то, что я думаю, что мне нужно, пытается условно проверить, существует ли привязка ... но, возможно, это неправильный способ подумать об этом. Может ли кто-нибудь дать некоторые рекомендации?
Update
Отработка предложения Ash, я пытаюсь работать с 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 'd пойти триггерный путь, как предложил А.Ш. привыкнуть к тому, что избавляет вас от внедрения конвертера абсолютно для всех (помните, что иногда конвертер по-прежнему будет лучшим решением в зависимости от сложности вашего сценария) – Dbl
Спасибо, ASh! Однако я что-то пропустил в предоставленной ссылке? Кажется, я не вижу никаких ответов с триггерами данных в них. – andyopayne