В приложении WPF у меня есть пользовательский элемент управления. Мне бы хотелось, чтобы всплывающая подсказка для объектов, полученных из этого пользовательского элемента управления, зависела от значения одного из атрибутов этого пользовательского элемента управления.
Можно ли объявить это в шаблоне элемента управления этого пользовательского элемента управления?
Что-то вроде:
<ControlTemplate>
??? // <!--XAML ToolTip declaration -->
...
<ControlTemplate.Triggers>
<Trigger Property="MyProperty" Value="FirstValue">
<Setter ...??? /> // <!--XAML ToolTip text assignment -->
</Trigger>
...
<Trigger Property="MyProperty" Value="SecondValue">
<Setter ...??? /> // <!--XAML ToolTip text assignment -->
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Отредактировано (добавлено):
Я нашел решение:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="MyProperty" Value="FirstValue" />
</MultiTrigger.Conditions>
<Setter TargetName="PART_Backgr" Property="ToolTip" Value="Available"/>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="MyProperty" Value="SecondValue" />
</MultiTrigger.Conditions>
<Setter TargetName="PART_Backgr" Property="ToolTip" Value="Sold"/>
</MultiTrigger>
Работает отлично.
Но осталась одна проблема: на самом деле Value="Available"
и другие такие значения должны содержать нелатинские символы (приложение локализовано на русском языке). Когда я пытаюсь скомпилировать его с Value="Свободно"
, я получаю ошибку en:
'Недопустимый символ в данной кодировке.' XML недействителен.
Какое решение может быть для этой проблемы? Может быть, я мог бы где-нибудь изменить кодировку, по которой компилируется страница Generic.xaml? Или как-нибудь изменить код XAML?
(На самом деле, в каждом окне у меня много нелатинских символов в XAML, и все компилируется нормально. Но, возможно, проблема в том, как они использовали.)