Wie schlucken ich das Drop-Down-Verhalten innerhalb eines Expander.Header?
-
04-10-2019 - |
Frage
würde Ich mag einen Expander von Expansions- / Kollabieren zu verhindern, wenn Benutzer in dem Header-Bereich klicken. Dies ist im Grunde die gleiche Frage wie Q 1.396.153 , aber ich würde eine günstigere Antwort zu schätzen wissen:)
Gibt es eine nicht-invasive Art und Weise, dies zu tun? Ich bin nicht sicher, wie das Verhalten auf den Expander.Header Inhalt befestigen Mausklicks zu verhindern. Ich bin bereit, außerhalb des Expanders in Inhalt zu schweben selbst über ein festes Raster-Layout, aber ich bin gespannt, nicht auf der Lösung. Ideen?
XamlPad Probe XAML:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<Expander>
<Expander.Header><TextBlock>
When I click this text,
I don't want to trigger expansion/collapse! Only when I click the
expander button do I want to trigger an expand/collapse!
</TextBlock></Expander.Header>
<Grid Background="Red" Height="100" Width="100" >
</Grid>
</Expander>
</Page>
Lösung
Sie können von Mausklicks auf dem Textfeld beenden von der Anwendung behandelt werden.
XAML:
<Expander>
<Expander.Header>
<TextBlock MouseDown="TextBlock_MouseDown">
When I click this text,
I don't want to trigger expansion/collapse! Only when I click the
expander button do I want to trigger an expand/collapse!
</TextBlock>
</Expander.Header>
<Grid Background="Red" Height="100" Width="100" >
</Grid>
</Expander>
-Code hinter:
private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;
}
Andere Tipps
Ich weiß nicht, ob dies ein Greuel ist, aber ich habe den Inhalt aus dem Expander.Header bewegt und getan einige Grid / festes Layout / Panel.ZIndex Tricks, um es erscheinen zu lassen, dass der Inhalt der ist Expander.Header ... aber es ist nicht. Dies funktioniert, aber es ist schrecklich.