2015-05-21 1 views
0

Я хотел бы иметь кнопку радио, свойство IsEnable которого не вносит никаких изменений в его внешний вид. Тем не менее, кнопка Radio не должна позволять пользователю ничего делать, если свойство IsEnable является False.Как отключить отключенный эффект от кнопки Radio?

Я просто хочу, чтобы у вас была кнопка Radio, которая выглядит так же, независимо от ее свойства IsEnable. Помимо внешнего вида все остальное должно работать так, как есть.

Это может показаться странным требованием. Но я хочу добиться этого. Я использую кнопки Radio Buttons как List Box в списке Box. Все работает хорошо, но проблема возникает, когда пользователь делает Ctrl Мышь влево Нажмите на отмеченную кнопку «Радио». Здесь все терпит неудачу.

Пожалуйста, помогите мне.

+0

Ашвин его очень запутанно..Помочите его, пожалуйста :) –

+0

Привет, Сунил. Мы знаем, что всякий раз, когда мы устанавливаем свойство IsEnable Radio Button на False, это фоновые изменения, фон, круг переднего плана и фона. Я просто не хочу, чтобы это происходило, когда я устанавливал IsEnable в False. Я хочу, чтобы моя кнопка «Радио» выглядела так же хорошо, как «Включено», даже если для параметра IsEnabled установлено значение «Ложь». Надеюсь, я на этот раз понятен. –

ответ

2

Вам нужно будет извлечь ControlTemplate из RadioButton, а затем удалить стиль для отключения триггера. Ниже приведен пример стандартного шаблона для RadioButton. Просто раскомментируйте курок IsEnable = False

<Style x:Key="RadioButtonStyle1" TargetType="{x:Type RadioButton}"> 
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
      <Setter Property="Background" Value="#F4F4F4"/> 
      <Setter Property="BorderBrush" Value="{StaticResource CheckBoxStroke}"/> 
      <Setter Property="BorderThickness" Value="1"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type RadioButton}"> 
         <BulletDecorator Background="Transparent"> 
          <BulletDecorator.Bullet> 
           <Themes:BulletChrome BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" IsChecked="{TemplateBinding IsChecked}" IsRound="true" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}"/> 
          </BulletDecorator.Bullet> 
          <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
         </BulletDecorator> 
         <ControlTemplate.Triggers> 
          <Trigger Property="HasContent" Value="true"> 
           <Setter Property="FocusVisualStyle" Value="{StaticResource CheckRadioFocusVisual}"/> 
           <Setter Property="Padding" Value="4,0,0,0"/> 
          </Trigger> 
          <Trigger Property="IsEnabled" Value="false"> 
           <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
+0

Спасибо Кришне за то, что вы нашли время и ответили на мой вопрос! –

+0

Спасибо Кришне за то, что нашли время и ответили на мой вопрос! Однако даже после комментирования триггера IsEnabled я легко вижу разницу. Никакая разница не наблюдалась после комментирования. –

+0

Какую разницу вы замечаете? Можете ли вы опубликовать скриншот того, что вы хотите, чтобы он выглядел и как он выглядит на данный момент? – Krishna

0

Ashwin,

Его очень простой

Просто следуйте инструкциям.

  1. Щелкните правой кнопкой мыши на RadioButton, редактирования шаблона и редактирование Копию

  2. Затем перейти на стиль, созданный и закомментируйте код в раскадровку-инвалидов визуального состояния, как показано на этом изображении «http://i.stack.imgur.com/3TNoR.png»

  3. Тогда он должен выглядеть одинаково для обоих состояний. Посмотрите на результате «http://i.stack.imgur.com/fCL47.png»

Надеется, что он решил свою цель. Спасибо,

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