73

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>
Dave Clemmer
  • 3,741
  • 12
  • 49
  • 72
Russ
  • 12,312
  • 20
  • 59
  • 78

1 Answers1

160
<TextBlock IsHitTestVisible="False" .../>
Kent Boogaart
  • 175,602
  • 35
  • 392
  • 393
  • 1
    Sometimes it’s the simplest things. Thanks a ton. – Russ Jun 12 '09 at 18:46
  • 1
    Does `IsHitTestVisible` propagate through child objects? – Logix Oct 07 '20 at 13:08
  • 1
    The child elements may have their own IsHitTestVisible set to true, but as long as the container is false, none of them should register mouse events. – David Mar 30 '21 at 15:59