Можно ли назначить текст всплывающей подсказки (содержащий нелатинские символы) в шаблоне элемента управления пользовательского элемента управления WPF? - PullRequest
1 голос
/ 17 января 2010

В приложении 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, и все компилируется нормально. Но, возможно, проблема в том, как они использовали.)

1 Ответ

2 голосов
/ 17 января 2010

Разве это не работает?

<ControlTemplate.Triggers>                    
    <Trigger Property="MyProperty" Value="FirstValue">
        <Setter Property="ToolTip" Value="..."/>
    </Trigger>
</ControlTempalte.Triggers>

Чтобы попытаться решить другую проблему, у меня работает без особых изменений следующее:

<TextBlock Text="Свободно" ToolTip="Свободно"/>

Я скопировал и вставил этот текст из вашего вопроса в свой код XAML.

...