0

ObservableCollection<Point>表示される があり、XAMLでおよびプロパティItemsControlを設定します。ItemsPanelTemplateItemsPanelItemTemplate

ポイントが境界ボックス内の正規化された位置を表すようにします。したがって、 がある場合Point(0.5, 0.5)、それはコンテナのちょうど真ん中になります。の場合Point(0.25, 0.75)、コンテナーの幅の 25%、コンテナーの高さの 75% に配置されます。

問題は、WPF でそれを実現するにはどうすればよいかということです。ValueConverter を ItemContainerStyle バインディングに配置する必要がありますか? Behavior、DataTemplate、ElementBinding、MultiBinding を使用する必要がありますか?

私は少し迷っています...

絶対配置で動作するXAMLコード(私が望むものではありません):

            <ItemsControl x:Name="MarcadoresSelecionadosZoom" ItemsSource="{Binding ListaPontos}" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="{x:Null}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <Canvas IsItemsHost="True" />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>                      
                <ItemsControl.ItemContainerStyle>
                    <Style TargetType="{x:Type FrameworkElement}">
                        <Setter Property="Canvas.Left" Value="{Binding X}" />
                        <Setter Property="Canvas.Top" Value="{Binding Y}" />
                    </Style>                
                </ItemsControl.ItemContainerStyle>
                <ItemsControl.ItemTemplate>
                    <DataTemplate DataType="Point">
                        <Ellipse Fill="Blue"
                            Width="8"
                            Height="8"
                            Margin="-4,-4,4,4" />
                    </DataTemplate>             
                </ItemsControl.ItemTemplate>
            </ItemsControl>
4

1 に答える 1