2013-03-09 2 views
2

Может ли кто-нибудь помочь мне с помощью простого шаблона, чтобы WPF ToggleButton показывал «да» или «нет» в зависимости от состояния переключения?WPF шаблон для да/нет ToggleButton

Я не хочу, чтобы это выглядело как кнопка, хотя бы часть текста, которая либо показывает, либо да или нет.

Мне нравится это как шаблон, который я могу просто добавить как стиль ко всем существующим элементам управления Toggle.

Я пробовал с Blend, но я новичок в шаблонах и не знал, как это сделать.

ответ

11

Построение на @ ответ Batuu, в быть просто оставил с содержанием как текст, просто обновить стиль для

Изменено

<Style x:Key="OnOffToggleStyle" TargetType="ToggleButton"> 
    <Setter Property="Content" Value="Off"/> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type ToggleButton}"> 
     <ContentPresenter /> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <Trigger Property="IsChecked" Value="True"> 
      <Setter Property="Content" Value="On"> 
      </Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

Добавление здесь по сравнению с оригинальным ответом

<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type ToggleButton}"> 
     <ContentPresenter /> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 

Вы в основном устанавливаете шаблон кнопки только для содержания, которое оно хранит.

+0

Отлично, большое спасибо! Так легко увидеть, но как бы разобраться, какие свойства доступны для таких элементов управления. Могу ли я получить этот стиль с помощью Blend? – Paul

+0

все элементы управления ui выглядят без изменений в WPF и редактируют стиль любого элемента управления через blend. Просто щелкните правой кнопкой мыши элемент управления в вашем дизайнере и выберите «Редактировать шаблон» -> «Редактировать копию» и следуйте за диалогом. (Это будет довольно много информации, когда вы попробуете отредактировать простой элемент управления по умолчанию. Лучший способ узнать, что это удалить все, что вы не использовали, а затем попробовать запустить приложение и медленно добавлять биты, чтобы увидеть, что на самом деле соответствует что) – Viv

+0

Большое спасибо за подсказку Viv! – Paul

4

Вы можете легко сделать это со стилем:

<Window x:Class="WpfTest.MainWindow" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <Style x:Key="OnOffToggleStyle" TargetType="ToggleButton"> 
      <Style.Triggers> 
       <Trigger Property="IsChecked" Value="True"> 
        <Setter Property="Content"> 
         <Setter.Value> 
          <TextBlock Text="Yes"/> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
       <Trigger Property="IsChecked" Value="False"> 
        <Setter Property="Content"> 
         <Setter.Value> 
          <TextBlock Text="No"/> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 
    <Grid> 
     <ToggleButton Style="{StaticResource OnOffToggleStyle}"/> 
    </Grid> 
</Window> 
+0

Ничего себе, легко, когда вы видите! Он по-прежнему выглядит как кнопка, легко ли удалить остальную часть стиля кнопки, так что я просто остался с ярлыком? – Paul

Смежные вопросы