如何在 WPF 中“单击”控件?
Posted
技术标签:
【中文标题】如何在 WPF 中“单击”控件?【英文标题】:How can I "Click Through" a control in WPF? 【发布时间】:2010-11-02 13:30:41 【问题描述】:我有一个带有ListBox
的订单输入表单,其中包含行项目列表。我有我的项目模板,其中一个值是我的每个项目中的 ComboBox
。
现在,除了采购订单之外,我的表单还可以创建贷项通知单,但是当我创建贷项通知单时,我想将“贷项通知单”放在列表框上,但是,TextBlock
涵盖了ComboBox
在我的两个订单项中。我想通过TextBlock
将我的点击事件传递给ComboBox
es,但我不知道该怎么做。
这就是我所拥有的,(也许我完全错了,我有点 WPF 的菜鸟)
<ListBox SelectionMode="Single" Grid.Row="2"
ItemsSource="Binding Path=LineItems" HorizontalContentAlignment="Stretch"
IsSynchronizedWithCurrentItem="True" Background="#66FFFFFF">
<ListBox.ItemContainerStyle>
<Style TargetType="x:Type ListBoxItem">
<Setter Property="Background" Value="WhiteSmoke"/>
<Setter Property="BorderThickness" Value="1" />
<Style.Triggers>
<DataTrigger Binding="Binding Path=IsPartBackOrder" Value="True">
<Setter Property="Background" Value="Orange" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate DataType="x:Type Entities:SalesOrderLineItem" >
<OrderEntry:SalesOrderLineItemCreate DataContext="Binding" DeleteSalesOrderLineItem="DeleteSalesOrderLineItem" Margin="0,3,3,0" >
<OrderEntry:SalesOrderLineItemCreate.Resources>
<Style TargetType="x:Type OrderEntry:SalesOrderLineItemCreate">
<Style.Triggers>
<DataTrigger
Binding="Binding RelativeSource=
RelativeSource
Mode=FindAncestor,
AncestorType=x:Type ListBoxItem
,
Path=IsSelected
" Value="True">
<Setter Property="Background" Value="LightBlue" />
<Setter Property="Foreground" Value="Black" />
</DataTrigger>
</Style.Triggers>
</Style>
</OrderEntry:SalesOrderLineItemCreate.Resources>
</OrderEntry:SalesOrderLineItemCreate>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Grid.Row="2"
Text="Credit Memo"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="48" Height="Auto"
FontStyle="Italic"
Foreground="Red"
Opacity=".25">
<TextBlock.Style>
<Style TargetType="x:Type TextBlock">
<Style.Triggers>
<DataTrigger Binding="Binding Path=OrderType" Value="CR">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
<DataTrigger Binding="Binding Path=OrderType" Value="CU">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
【问题讨论】:
【参考方案1】:<TextBlock IsHitTestVisible="False" .../>
【讨论】:
有时这是最简单的事情。非常感谢。IsHitTestVisible
是否通过子对象传播?
子元素可能会将自己的 IsHitTestVisible 设置为 true,但只要容器为 false,它们都不应该注册鼠标事件。以上是关于如何在 WPF 中“单击”控件?的主要内容,如果未能解决你的问题,请参考以下文章