绑定到父Grid的列计数属性

时间:2018-05-22 12:38:50

标签: c# wpf

我有一个Rectangle样式,用于在用鼠标指针悬停它们时突出显示Grid行。

我想将Grid.ColumnSpan的{​​{1}}属性绑定到父Rectangle列数。有关如何做到这一点的任何想法?是绑定到父Grid并使用转换器返回列数最佳选项?

以下是我正在尝试做的一个例子:

enter image description here

XAML:

Grid

2 个答案:

答案 0 :(得分:1)

将Window.Resources修改为:

<Window.Resources>
    <Style x:Key="MouseOverHighlightStyle" TargetType="Rectangle">
        <Setter Property="Fill" Value="Red" />
        <Setter Property="Opacity" Value="0" />
        <Setter Property="Grid.Column" Value="0" />
        <Setter Property="Grid.ColumnSpan" Value="{Binding Path=ColumnDefinitions.Count, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}}}" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Opacity" Value="0.3" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

您将获得父级(本示例中为Grid)ColumnDefinition.Count并将其设置为Rectangle的columnSpan。我刚尝试过它的工作原理,所以请告诉我它是否适合你

答案 1 :(得分:-1)

它并没有完全回答你的问题,但是你可以将Span设置为非常大的值,这样无论有多少列,你的Rectangle总是跨越整个区域。类似的东西:

<Setter Property="Grid.ColumnSpan" Value="2147483647" /> <!-- int.MavValue -->