How can I "Click Through" a control in WPF?

Russ picture Russ · Jun 12, 2009 · Viewed 18.3k times · Source

I have an order entry form that has a ListBox with a list of line items. I have my items template, and one of the values is a ComboBox in each of my Items.

Now, my form can also create Credit memo's in addition to purchase orders, but when I am creating a credit memo, I want to put the words "Credit Memo" over the list box, however, the TextBlock covers the ComboBox in two of my line items. I would like to pass my click event through the TextBlock to the ComboBoxes but I'm not sure how to do it.

This is what I have, ( Maybe I am coming at this totally wrong, I am kinda a noob with 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>

Answer

Kent Boogaart picture Kent Boogaart · Jun 12, 2009
<TextBlock IsHitTestVisible="False" .../>