Hallo,
in <Application.Resources> habe ich u. a. folgendes Template für eine ComboBox erstellt:
Hier das Template für die eigentliche ComboBox:
<Style x:Key="{x:Type MyComboBox}" TargetType="{x:Type MyComboBox}">
...
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBox}">
<Grid>
...
<ToggleButton x:Name="ToggleButton" Template="{StaticResource ComboBoxToggleButton}" Grid.Column="2" Focusable="false" ClickMode="Press"
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"/>
Hier das Template für den von der ComboBox benötigten ToggleButton:
<ControlTemplate x:Key="ComboBoxToggleButton" TargetType="{x:Type ToggleButton}">
<Grid>
....
<Border x:Name="Border" BorderThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderThickness}"
...
Wenn ich nun eine ComboBox auf ein Fenster setze, klappt alles.
Wenn ich aber im Fenster für eine bestimmte Combobox die BorderThickness="5" setze, wird dies ignoriert. Ich möchte, dass die im Fenster bei der ComboBox eigegebene BorderThickness in das Template übergeben wird. Daher ist oben auch die Zeile "BorderThickness="{Binding RelativeSource..." drin.
Wie muss diese Zeile korrigiert werden?
Danke.
Mfg
Michael
PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!
:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]
Hi m.grauber,
das RelativeSource={RelativeSource TemplatedParent}
bezieht sich aber in dem Fall auf den ToogleButton, nicht auf die ComboBox. Wenn du die Strichstärke bei der ComboBox angeben, aber im ToggleButton anwenden willst, mußt du es auch im ControlTemplate der ComboBox an den ToggleButton weiterreichen. Eigentlich fehlt nur im ersten Codeabschnitt in der letzten Zeile ein zusätzliches BorderThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderThickness}"
.
Christian
Weeks of programming can save you hours of planning
Hallo Christian,
vielen Dank für die Hilfe! Darüber, dass das ein Control in einem anderen Control ist, habe ich auch schon nachgedacht. Ich dachte bisher aber immer "TemplatedParent" bezieht sich auf das gesamte ("äußere") Template.
Aber das "TemplatedParent" bezieht sich also nicht auf das gesamte ("äußere") angewandte Template sondern nur auf das jeweils übergeordnete?
Wenn es so ist, habe ich die von Dir beschriebene Zeile nochmals eingebaut:
Es kommt keine Fehlermeldung (es wird zumindest nichts angezeigt) aber ändern tut sich auch nichts. Ich leite so diesen Wert über die Combobox an den Toggle Button weiter?
<Style x:Key="{x:Type MyComboBox}" TargetType="{x:Type MyComboBox}">
...
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBox}">
<Grid>
...
<ToggleButton x:Name="ToggleButton" Template="{StaticResource ComboBoxToggleButton}" Grid.Column="2" Focusable="false" ClickMode="Press"
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
BorderThickness="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=BorderThickness}"/>
Vielleicht muss ich noch etwas anderes beachten?
(Ich habs getestet: Die Weiterleitung an die Combobox klappt, die erneute Weiterleitung an den ToggleButton wird ignoriert)
Danke!
Mfg
Michael
PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!
:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]
Hi m.grauber,
nach dem, was ich so erkennen kann, sollte es eigentlich funktionieren. Du kannst aber mal mit dem DataBindingDebugConverter nachschauen, ob die richtigen Werte an der richtigen Stelle auch weitergegeben werden. Ansonsten solltest du zuerst sicherstellen, daß keine DataBinding-Fehler im Ausgabefenster gemeldet werden.
Christian
Weeks of programming can save you hours of planning
Hallo Christian,
vollkommen richtig! Es läuft nun. Ich hatte wirklich Tomaten auf den Augen 8)
Nun ist mir auch die Weiterleitung klar geworden.
Tausend Dank nochmals! 👍
Grüße
Michael
Mfg
Michael
PS: Ich stelle nur Fragen, wenn ich in Büchern, im Web und in Foren nichts gefunden habe. Dumme Fragen bitte ich zu entschuldigen!
:] VISUAL STUDIO 2017 + .NET FRAMEWORK 4.5 + SQL-Server 2012 :]