2013-07-03 3 views
0

Предположим, у меня есть n число прямоугольников. Я хочу, чтобы они вели себя так, что когда я нажимаю на любой прямоугольник, он должен быть заполнен белым, а все остальные должны быть заполнены черным цветом.Создание прямоугольников для работы подобно RadioButtons с использованием Expression Blend

Я знаю, что могу создать стиль. Но при создании стиля я могу сказать триггер, который заполняет прямоугольник черным цветом, но как я могу сказать, что все оставшиеся прямоугольники заполняют белым цветом.

Может ли кто-нибудь мне предложить? Я хочу только небольшой намек.

+0

почему вы должны использовать прямоугольники? почему же «RadioButton» не был выбран в качестве прямоугольника? – dkozl

ответ

2

Не заставляйте прямоугольники работать как RadioButtons, сделать RadioButtons выглядеть прямоугольными.
Я бы предложил вместо этого использовать RadioButton и изменить шаблон, чтобы он выглядел как прямоугольник. Затем вы можете инициировать смену фона на основе свойства RadioButton.IsChecked. Таким образом, RadioButton позаботится о тике/отключении операции и триггерном изменении фона в другом RadioButtons в той же группе.

<Style TargetType="{x:Type RadioButton}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type RadioButton}"> 
       <Border BorderBrush="Black" BorderThickness="1" Background="Black" x:Name="PART_Border"> 
        <ContentPresenter/> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsChecked" Value="True"> 
         <Setter TargetName="PART_Border" Property="Background" Value="White"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

и использовать ваш RadioButton как это:

<RadioButton> 
    <RadioButton.Content> 
     <!-- content to be displayer inside border --> 
    </RadioButton.Content> 
</RadioButton> 
+0

Спасибо. Это хорошее предложение от вас. Теперь у меня есть прямоугольник и изображение внутри него. Оба они привязаны к ViewBox. Теперь у меня есть 5 таких ящиков. Я попытался преобразовать их в RadioButtons. Здесь я был успешным. Но проблема возникает сейчас. Я хочу, чтобы все пять RadioButtons имели разные изображения. – Khushi

+0

@ user2524507 обновил мой ответ. По существу, 'ContentPresenter' внутри' Border', и когда вы добавляете 'RadioButton', укажите его содержимое как ваше изображение. – dkozl

+0

Ya, оно решает проблему. – Khushi

1

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

Вместо эллипса вы можете иметь прямоугольник/границу с некоторой толщиной и установить ее цвет фона при щелчке мыши

+0

Спасибо. Это хорошее предложение от вас. Теперь у меня есть прямоугольник и изображение внутри него. Оба они привязаны к ViewBox. Теперь у меня есть 5 таких ящиков. Я попытался преобразовать их в RadioButtons. Здесь я был успешным. Но проблема возникает сейчас. Я хочу, чтобы все пять RadioButtons имели разные изображения. – Khushi