Laden...

Silverlight: ElementBinding läuft nicht wie erwartet

Erstellt von Jürgen Gutsch vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.569 Views
J
Jürgen Gutsch Themenstarter:in
537 Beiträge seit 2007
vor 12 Jahren
Silverlight: ElementBinding läuft nicht wie erwartet

Ich habe folgenden Style mit Templates


<Style x:Key="DynamicViewItemStyle" TargetType="Controls:DynamicViewItem">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <toolkit:Expander Name="Expander1" Style="{StaticResource DynamicViewExpanderStyle}" Header="Persönlches">
                    <!--<toolkit:Expander.Resources>
                        <Controls:ActualSizePropertyProxy Element="{Binding ElementName=Expander1}" Divider="2" x:Name="SizeInnerProxy1" />
                    </toolkit:Expander.Resources>-->
                    <ItemsPresenter />
                </toolkit:Expander>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <toolkit:WrapPanel x:Name="WrapPanel1" Orientation="Horizontal">
                    <toolkit:WrapPanel.Resources>
                        <Controls:ActualSizePropertyProxy Element="{Binding ElementName=WrapPanel1}" Divider="2" x:Name="SizeInnerProxy2" />
                    </toolkit:WrapPanel.Resources>
                </toolkit:WrapPanel>
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="ItemTemplate">
        <Setter.Value>
            <DataTemplate>
                <Grid Width="{Binding ActualWidthValue, ElementName=SizeInnerProxy2}">
                    <ContentPresenter />
                </Grid>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

Das "DynamicViewItem" ist ein eigenes Control, das von "ItemsControl" ableitet.
Der "ActualSizePropertyProxy" ist ein "FrameworkElement", das mir die ActualWidth und die ActualHeight eines beliebigen anderen FrameworkElement liefert (das das bekanntlich in Silverlight Probleme macht, diese Werte so zu erhalten)

Mein Problem ist nun dass das Binding nicht ausgeführt wird. Die Property "ActualWidthValue" aus dem Proxy wird nicht aufgerufen. Möglicherweise kann schon garnicht das gebundene Element ermittelt werden.

Der Proxy ist nicht das Problem, da ich den schon mehrfach erfolgreich im Einsatz habe.

Das Problem habe ich generell bei "ItemsControls", auch bei ListBoxen. Kann mir jemand sagen, woran das liegt? Wieso kann ich nicht vom DataTemplate per ElementBinding auf das ControlTemplate oder ItemsPanelTemplate zugreifen?
Stehen die Resourcen zu dem Zeitpunkt noch nicht zur Verfügung?

[EDIT]Templating (via ItemTemplate) funktioniert nicht, für Items die per XAML innerhalb des ItemControls liegen, oder? Nur für gebundene Daten?[/EDIT]

J
Jürgen Gutsch Themenstarter:in
537 Beiträge seit 2007
vor 12 Jahren

(hier ist der richtige thread)

Etwas irritierend ist, dass das ganz mit einem CostumControl funktioniert, dass von Control erbt. Handelt es sich aber um ein ItemsControl bekomme ich besagte Fehlermeldung.
Hat echt keiner einen Tipp?