Frage

Ich versuche, auf diese ItemsControl DataBind:

<ItemsControl ItemsSource="{Binding Path=Nodes, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

Dieses DataTemplate Durch die Verwendung, ich versuche individuell auf meine Node Elemente auf dem Canvas richtig zu positionieren:

<DataTemplate DataType="{x:Type Model:EndNode}">
    <Controls:EndNodeControl Canvas.Left="{Binding Path=XPos}" Canvas.Top="{Binding Path=YPos}" />
</DataTemplate>

Doch es funktioniert nicht wie erwartet. Alle meine Knotenelemente sind auf der jeweils anderen in der gleichen Position gezogen. Alle Vorschläge, wie dies zu erreichen?

War es hilfreich?

Lösung

Die beigefügten Eigenschaften funktionieren nur auf direkten Kinder der Leinwand. Item wird Content Kontrollen als direkte Kinder platzieren, so dass Sie einen Stil für das auch hinzufügen möchten:

<ItemsControl ItemsSource="{Binding Path=Nodes}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="ContentPresenter">
            <Setter Property="Canvas.Left" Value="{Binding Path=XPos}" />
            <Setter Property="Canvas.Top" Value="{Binding Path=YPos}" />
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>

Hope, das hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top