WPF zmiana elementu sąsiedniego w XAML

0

Witam,
chciałbym po najechaniu myszką zmienić tło małego grida, a nie całego canvasa, czy jest to możliwe (w XAML)?

    <Grid Width="100" Height="150" HorizontalAlignment="Left" VerticalAlignment="Top">
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="50"/>
            <RowDefinition Height="50"/>
        </Grid.RowDefinitions>
        <Grid Style="{StaticResource GridStyle}" Grid.Row="0"/>
        <Grid Style="{StaticResource GridStyle}" Grid.Row="1"/>
        <Grid Style="{StaticResource GridStyle}" Grid.Row="2"/>
        <Canvas Style="{StaticResource MainStyle}" Grid.Row="0" Grid.RowSpan="3"/>
    </Grid>

    <Style x:Key="GridStyle" TargetType="{x:Type Grid}">
        <Setter Property="Background" Value="Yellow"/>
    </Style>

    <Style x:Key="MainStyle" TargetType="{x:Type Canvas}">
        <Setter Property="Background" Value="Transparent"/>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Silver"></Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
0

Wsadź tego triggera do stylu GridStyle a wyrzuć z MainStyle.

0

To nie będzie działać, bo canvas przykrywa te 3 małe gridy.

0

Myślę, że raczej nie. Może jakimiś konwerterami i code behind dla zdarzenia poruszania myszką nad canvasem. A można wiedzieć, dlaczego ma to tak wyglądać?

0
xfeng napisał(a):

To nie będzie działać, bo canvas przykrywa te 3 małe gridy.

to przestaw canvas'a przed grid'y i jeśli będziesz chciał widzieć to co jest na canvas'ie to zrób domyślny background dla gridów jako transparent

0

Dzięki za odpowiedzi.
Próbuję zrobić terminarz wzorując się na http://www.oscardelossantos.es/en/programacion/wpf-programacion/wpf-scheduler-control-2/
Canvas przykrywa wszystkie kontrolki i jest niewidoczny, gdyż z kodu dodawane są do niego nowe elementy - notatki.
Chciałbym, aby pola, na których nie ma jeszcze notatek, zmieniały kolor po najechaniu myszką.
Chyba będę musiał pomyśleć nad trochę innym rozwiązaniem.

0

A gdyby tak zrezygnować z canvasa? Jak już widać w Twoim kodzie, kiedy wstawisz parę rzeczy w gridzie w te same komórki, to te kontrolki się na siebie nakładają. Może np. zrobić grid główny 1x1 z całym dniem, a w nim grid z siatką-tłem oraz te notatki odpowiednio poprzesuwane? Wtedy siatka byłaby zasłonięta (nie reagowała na najechanie zmianą koloru) tylko w miejscach, gdzie faktycznie są notatki.

0

Dzięki za propozycję, jak uda mi się zrobić, to dam znać czy skorzystałem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1