programing

ItemsControl DataTemplate에서 캔버스 속성 설정

padding 2023. 4. 18. 21:50
반응형

ItemsControl DataTemplate에서 캔버스 속성 설정

나는 이것에 데이터 바인드를 하려고 한다.ItemsControl:

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

이것을 사용하여DataTemplate, 저는 제 개인 포지셔닝하고 있습니다.Node의 요소Canvas올바르게:

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

하지만 예상대로 되지 않습니다.노드 요소는 모두 같은 위치에 서로 겹쳐져 있습니다.어떻게 하면 좋을까요?

연결된 속성은 의 직계 하위에서만 작동합니다.Canvas.ItemsControl배치하다ContentPresenter컨트롤은 직계 하위 항목으로 지정되므로 스타일을 추가할 수도 있습니다.

<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>

언급URL : https://stackoverflow.com/questions/1265364/setting-canvas-properties-in-an-itemscontrol-datatemplate

반응형