Laden...

XAML Binding-Problem wenn Objekt im Code-Behind erzeugt wird

Erstellt von adm1n vor 9 Jahren Letzter Beitrag vor 9 Jahren 680 Views
A
adm1n Themenstarter:in
51 Beiträge seit 2014
vor 9 Jahren
XAML Binding-Problem wenn Objekt im Code-Behind erzeugt wird

Hallo zusammen,

folgender XAML-Code:


  <Fluent:Ribbon Name="Ribbon">

        <Fluent:Ribbon.ContextualGroups>
            <Fluent:RibbonContextualTabGroup Name="Groupx"/>
        </Fluent:Ribbon.ContextualGroups>

        <Fluent:RibbonTabItem Group="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Fluent:RibbonContextualTabGroup}},Path=Groupx}" />
        
    </Fluent:Ribbon>

Folgender Code-Behind (quick and dirty):


Fluent.Ribbon _Ribbon = new UCRibbon().FindName("Ribbon") as Fluent.Ribbon;

Ribbon.ContextualGroups.Add(_Ribbon.ContextualGroups[0]);
Ribbon.Tabs.Add(_Ribbon.Tabs[0]);

Im XAML wird einmal Fluent:RibbonContextualTabGroup und einmal Fluent:RibbonTabItem
erzeugt. Nach dem .FindName("Ribbon") hat er auch jeweils ein Objekt in _Ribbon.Tabs und
ein Objekt in _Ribbon.ContextualGroups, jedoch Funktioniert das Group-Binding vom
RibbonTabItem nicht. Siehe Screenshot. Der Wert "Group" ist null.

Habe auch Group="{Binding ElementName="Groupx"}" probiert, ging aber genau so wenig.

"Ribbon" ist ein anderes Ribbon-Menu. Ich will quasi ein Teil vom einen Fluent-Ribbon mit
einem anderen Fluent-Ribbon zusammenführen.

Ohne XAML, also **ALLES **im Code-Behind, funktioniert es.

Jemand eine Idee, wie ich das Binding im XAML machen muss, damit es funktioniert?

Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt - Tractatus 5.6, Ludwig Wittgenstein

849 Beiträge seit 2006
vor 9 Jahren

Ich kann Dir zumindest sagen warum das Binding nicht funktioniert.

Relative Source Binding FindAncestor sucht im VisualTree nach oben. Deine TabGroup die Du binden magst ist aber eine Ebene tiefer, und nicht mal im selben Ast.

In diese Situation bin ich aber noch nie gekommen. Deshalb weis ich weder ob es Sinn macht, noch wie man es löst.