Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как изменить свойства элемента? 
:(
    Опции темы
Balagun
Дата 25.9.2010, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.9.2010

Репутация: нет
Всего: нет



Допустим есть 10 прямоугольников (Rectangle) с одинаковыми свойствами, описанными в Style1, в котором в частности <Setter Property="Fill" Value="Red" />. Допустим, я хочу, чтобы при наведении мыши на прямоугольник цвет заливки менялся на Blue. В Style1 я добавляю триггер:
Код

<Trigger Property="IsMouseOver" Value="True">
    <Setter Property="Fill" Value="Blue" />
</Trigger>

Работает.

Теперь допустим, что над каждым из Rectangle расположено Image в формате PNG, которое представляет собой рамку с прозрачной серединой такого же размера, что и прямоугольник под ней.
Суть кода такова:
Код

<Grid ...>
    <Rectangle x:Name="01" style="Style1" .../>
    <Rectangle x:Name="02" style="Style1" .../>
    .........
    <Rectangle x:Name="10" style="Style1" .../>
</Grid>
<Grid ...>
    <Image x:Name="001" style="Style2" .../>
    <Image x:Name="002" style="Style2" .../>
    .........
    <Image x:Name="010" style="Style2" .../>
</Grid>

.........

<style x:Key="Style1" ...>
    <setter ... />
</style>

<style x:Key="Style2" ...>
    <setter ... />
</style>

Соответственно, теперь при наведении мыши на Rectangle, триггер не сработает, т.к. Rectangle закрыт Image.
Как сделать так, чтобы при наведении курсора на определенный Image менялся цвет расположенного под ним Rectangle?
Можно конечно для каждого Image описать на C# событие, которое будет менять цвет прямоугольника под ним, но получается, что описаний будет столько же, сколько прямоугольников, и потому хотелось бы сделать изящней.


Это сообщение отредактировал(а) Balagun - 27.9.2010, 07:16
PM MAIL   Вверх
Balagun
Дата 27.9.2010, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.9.2010

Репутация: нет
Всего: нет



Может кто прокомментирует...

Сделал с помощью свойства Tag и Binding, работает... Не знаю, насколько это соответствует концепции, но выглядит так:

Код

<Grid ...>
    <Rectangle x:Name="Rect01" style="RectStyle1" ......... Fill="{Binding Tag, ElementName=Img01}" />
    <Rectangle x:Name="Rect02" style="RectStyle1" ......... Fill="{Binding Tag, ElementName=Img02}" />
    .........
    <Rectangle x:Name="Rect10" style="RectStyle1" ......... Fill="{Binding Tag, ElementName=img10}" />
</Grid>
<Grid ...>
    <Image x:Name="Img01" style="ImgStyle2" ......... />
    <Image x:Name="Img02" style="ImgStyle2" ......... />
    .........
    <Image x:Name="Img10" style="ImgStyle2" ......... />
</Grid>

.........

<style x:Key="RectStyle1" ......... >
    <setter ......... />
</style>

<style x:Key="ImgStyle2" .........>
    <setter ......... />
    <Setter Property="Tag" Value="Red" />
    <Style.Triggers>
         <Trigger Property="IsMouseOver" Value="True">
             <Setter Property="Tag" Value="Green" />
         </Trigger>
     </Style.Triggers>
</style>



Это сообщение отредактировал(а) Balagun - 27.9.2010, 07:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0397 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.