[wpf鼠标悬停网格行的第一个元素

问题描述 投票:0回答:1

当我将鼠标悬停在网格(用于项目控制的模板)上时,可以更改行(我正在悬停的此特定行)的第一列和最后一列的字体颜色是可以的

我想要的是“ RowNumbering”对象,当我们将其悬停在其“父”行时,可以更改字体颜色。排序该行文本。

将其想象为表格:其中o只是一个座位,数字是行号,当我将鼠标悬停在“ o”上时,我想更改行号的字体颜色。我希望很清楚我尝试了什么,我将xaml剥离到最低限度。如果可能,也希望通过xaml来完成此操作,而不是通过代码来完成。当我将鼠标悬停在第二行中的“ o”上方时,示例如下。

1 | o | o | o | o | 1

2 | o | o | o | o | 2

3 | o | o | o | o | 3

<ItemsControl ItemsSource="{Binding Seats}" Name="SeatsItems">
    <ItemsControl.RenderTransform>
        <TranslateTransform  X="0" Y="0" />
    </ItemsControl.RenderTransform>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Grid Name="ParentGrid" local:GridHelpers.RowCount="{Binding RowCount}" 
                  local:GridHelpers.ColumnCount="{Binding ColumnCount}" 
                  ShowGridLines="False" Background="#1C222E" 
                  HorizontalAlignment="Center" VerticalAlignment="Center" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="ContentPresenter">
            <Setter Property="Grid.Row" Value="{Binding RowEx}" />
            <Setter Property="Grid.RowSpan" Value="2" />
            <Setter Property="Grid.Column" Value="{Binding ColumnEx}" />
            <Setter Property="Grid.ColumnSpan" Value="{Binding ColSpan}" />
            <Style.Triggers>
                <!--
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Width" Value="60"/>
                </Trigger>
                -->
            </Style.Triggers>
            <Style.Resources>
                <Style TargetType="{x:Type Rectangle}">
                    <Setter Property="Fill" Value="Blue" />
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Status}" Value="Available">
                            <Setter Property="Stroke" Value="#5D606D" />
                            <Setter Property="Fill" Value="#5D606D" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Style.Resources>
        </Style>
    </ItemsControl.ItemContainerStyle>
    <ItemsControl.Resources>
        <DataTemplate DataType="{x:Type local:Seat}">
            <Canvas Name="Canv" Width="30" Height="30" Margin="4" Background="Transparent" 
                    Tag="{Binding ID}">
                <Rectangle Name="RecTop" Canvas.Top="4" Canvas.Left="1" Width="28" 
                           Height="18" RadiusX="2" RadiusY="2" />
                <Rectangle Name="RecBot" Canvas.Top="23" Canvas.Left="1" Width="28" 
                           Height="7" RadiusX="2" RadiusY="2" />
                <!-- <TextBlock Text="{Binding Path=Column}" TextWrapping="Wrap" 
                                TextAlignment="Center" VerticalAlignment="Center"  /> -->
            </Canvas>
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:RowNumbering}">
            <Canvas Width="30" Height="30" Margin="4" Background="Transparent">
                <TextBlock Text="{Binding Path=Text}" Foreground="#5D606D" 
                           TextWrapping="Wrap" TextAlignment="Center" 
                           VerticalAlignment="Center" Width="30" Height="20" 
                           Margin="0,5" />
            </Canvas>
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:Screen}">
            <Canvas Height="5" Margin="0,0,0,33" Background="#EA1C47" ClipToBounds="False">
            </Canvas>
        </DataTemplate>
    </ItemsControl.Resources>
</ItemsControl>
wpf grid row
1个回答
0
投票

我认为您使用的控件类型错误。当您希望WPF为您处理控件的布局时,诸如Grid等WPF布局控件将非常有用。但是,就您而言,借助于RowEx / ColumnEx属性,布局已隐含在数据结构中。您想要做的是将鞋拔子复杂的布局要求放到并非真正为此设计的布局控件中。您以前已经遇到过与此相关的问题,因此必须使用该GridHelper。它可能不会变得更好。

© www.soinside.com 2019 - 2024. All rights reserved.