Сделать свойство видимого теста попаданий другим для строк сетки - PullRequest
2 голосов
/ 30 сентября 2011

У меня есть сетка, которая содержит 3 строки, одна из которых содержит TextBox, который можно редактировать. Сетка находится внутри paretn, которая обеспечивает функциональность перетаскивания, чтобы позволить ей перемещаться по холсту. Чтобы включить это, мне нужно установить для IsHitTestVisible значение false, чтобы разрешить передачу щелчка мыши до родительского объекта.

Проблема в том, что, когда я делаю это, я не могу выбрать текстовое поле в сетке, даже если видимый тест попадания установлен в True;

<Grid Background="{StaticResource NodeBackground}" IsHitTestVisible="True">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="2*"/>
                            <RowDefinition Height="1*"/>
                            <RowDefinition Height="2*"/>
                        </Grid.RowDefinitions>
                        <TextBox Text="{Binding Data}" Foreground="White" Background="Transparent" FontFamily="Consolas" FontSize="15" TextAlignment="Center" Grid.Row="1" BorderThickness="0" />
                    </Grid>

Можно ли установить свойство теста на попадание для каждой строки, поэтому, если удастся ударить одну из двух пустых строк, они продолжат передавать щелчок на родительский контейнер, но все еще смогут выбрать текстовое поле в среднем ряду?

Приветствие.

1 Ответ

0 голосов
/ 30 сентября 2011

Я не уверен, ваш код перетаскивания, но, возможно, вы можете использовать триггер, где IsHitTestVisible равно False, только если вы перетаскиваете элемент, а в остальное время это правда.

Как примечание, в прошлом у меня были проблемы с использованием встроенной в WPF DragDrop функциональности и тестированием попаданий. Я считаю, что гораздо проще использовать MouseEvents вместо этого, например, отслеживание MouseEnter / MouseLeave событий для перетаскивания

...