データ バインディングを使用して ItemsControl に Z インデックスを設定するにはどうすればよいですか?

ショーン・オニール

これにはいくつかの答えがありますが、いずれも UWP では機能せず、WPF でのみ機能します。子のそれぞれのビュー モデル内のプロパティに基づいて、その子を通常とは異なるパターンで動的に配置するカスタムの ItemsControl があります。アイテムが部分的に重複しているため、選択したアイテムが他のアイテムの下に隠れていないことを確認する必要があります。しかし、値をグリッドの Z-index にバインドする方法がわかりません。

<ItemsControl Name="myItemsControl" ItemsSource="{x:Bind PageViewModel.myCollectionOfMyViewModel}" RenderTransformOrigin="0.5,0.5" >
   <ItemsControl.RenderTransform>
        <CompositeTransform x:Name="myTransform" />
   </ItemsControl.RenderTransform>
   <ItemsControl.ItemsPanel>
      <ItemsPanelTemplate>
           <Grid />
      </ItemsPanelTemplate>
   </ItemsControl.ItemsPanel>
  <ItemsControl.ItemTemplate>
      <DataTemplate x:DataType="viewmodel:MyViewModel">
          <Grid Name="ItemGrid" Canvas.ZIndex="{x:Bind SelectedItem, Mode=OneWay, Converter={StaticResource SelectedItemToZindexConverter}}" RenderTransformOrigin="0.5,0.5" >
               <Grid.RenderTransform>
                    <CompositeTransform Rotation="{Binding ItemIdxNum, Mode=OneWay, Converter={StaticResource ItemIdxToRotationAngleConverter}}"
                                                TranslateX="{Binding ItemIdxNum, Mode=OneWay, Converter={StaticResource ItemIdxToXPosConverter}}"
                                                TranslateY="{Binding ItemIdxNum, Mode=OneWay, Converter={StaticResource ItemIdxToYPosConverter}}"
                                                ScaleX="{x:Bind SelectedItem, Mode=OneWay, Converter={StaticResource SelectedItemBoolToScaleConverter}}"
                                                ScaleY="{x:Bind SelectedItem, Mode=OneWay, Converter={StaticResource SelectedItemBoolToScaleConverter}}"
                                                />
                </Grid.RenderTransform>
                <StackPanel Orientation="Horizontal">
                      <TextBlock Text="{x:Bind ItemName, Mode=OneWay}"/>
                </StackPanel>                                
           </Grid>
      </DataTemplate>
   </ItemsControl.ItemTemplate>

</ItemsControl>

そこにある Canvas.Zindex はビルド エラーをスローしませんが、機能しません。ここや他の場所で検索すると、子要素ではなく、ItemsControl の ContentPresenter をターゲットにする必要があるようです。しかし、私はこれについてどうやって行くのか分かりません。すべての例は WPF 用であり、UWP では使用できないスタイル トリガー ターゲット タイプを使用します。

レイス

タイプミスのようです。の首都IですZIndex

Canvas.ZIndex="..." <!-- right -->

Canvas.Zindex="..." <!-- wrong -->

更新

ItemsControlはすべてのアイテムを でラップしますContentPresenterが、独自のバージョンを作成することでその機能をオーバーライドできます。次の代わりにこれを使用しますItemsControl

public class MyItemsControl : ItemsControl
{
    protected override DependencyObject GetContainerForItemOverride()
    {
        return ItemTemplate?.LoadContent() ?? base.GetContainerForItemOverride();
    }

    protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
    {
        ((FrameworkElement) element).DataContext = item;
    }
}

そして、あなたのxamlは、ルートレベルのタグを次のように切り替えるだけでこれを使用できます MyItemsControl

 <local:MyItemsControl Name="myItemsControl"
                        ItemsSource="{x:Bind PageViewModel.myCollectionOfMyViewModel}"
                        RenderTransformOrigin="0.5,0.5">
    <ItemsControl.RenderTransform>
        <CompositeTransform x:Name="myTransform" />
    </ItemsControl.RenderTransform>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Grid />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate x:DataType="viewmodel:MyViewModel">
            <Grid Name="ItemGrid"
                    Canvas.ZIndex="{x:Bind SelectedItem, Mode=OneWay, Converter={StaticResource SelectedItemToZindexConverter}}"
                    RenderTransformOrigin="0.5,0.5">
                <Grid.RenderTransform>
                    <CompositeTransform Rotation="{Binding ItemIdxNum, Mode=OneWay, Converter={StaticResource ItemIdxToRotationAngleConverter}}"
                                        TranslateX="{Binding ItemIdxNum, Mode=OneWay, Converter={StaticResource ItemIdxToXPosConverter}}"
                                        TranslateY="{Binding ItemIdxNum, Mode=OneWay, Converter={StaticResource ItemIdxToYPosConverter}}"
                                        ScaleX="{x:Bind SelectedItem, Mode=OneWay, Converter={StaticResource SelectedItemBoolToScaleConverter}}"
                                        ScaleY="{x:Bind SelectedItem, Mode=OneWay, Converter={StaticResource SelectedItemBoolToScaleConverter}}" />
                </Grid.RenderTransform>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{x:Bind ItemName, Mode=OneWay}" />
                </StackPanel>
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</local:MyItemsControl>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

インデックスに基づいてitemscontrolのデータテンプレートを変更するにはどうすればよいですか?

分類Dev

ItemsControl内からItemsSource以外のクラスへのバインディングを取得するにはどうすればよいですか?

分類Dev

データバインディングを使用してImageViewの背景として画像のURLを設定するにはどうすればよいですか?

分類Dev

ItemsControlでItemTemplateからホスティングコンテナへのバインディングを設定するにはどうすればよいですか?(UWP)

分類Dev

Azure Functionsの出力バインディングを使用してServiceBusメッセージのMessageIdを設定するにはどうすればよいですか?

分類Dev

インデックスを変数として設定するにはどうすればよいですか?

分類Dev

Scalaを使用してSparkでスライディングウィンドウランクを設定するにはどうすればよいですか?

分類Dev

Flash AS3:構築されたグラフィックのZインデックスを変更するにはどうすればよいですか?

分類Dev

インデックスをdata.lengthに設定するにはどうすればよいですか?

分類Dev

UIViewのzインデックスまたはスタック順序を変更するにはどうすればよいですか?

分類Dev

電話 + インターネットモデムを 1 つのデバイスとして設定するにはどうすればよいですか?

分類Dev

Mac OS Xでカスタムキーバインディングとキーマクロを設定するにはどうすればよいですか?

分類Dev

角度6のドロップダウンで双方向バインディングデータを設定するにはどうすればよいですか?

分類Dev

MultiIndex pandas DataFrameでインデックス値を設定するにはどうすればよいですか?

分類Dev

Reactでコンポーネントのzインデックスを変更するにはどうすればよいですか?

分類Dev

Djangoを使用してドメイン名のnginxインデックスページを設定するにはどうすればよいですか?

分類Dev

ObjectWriteStreamの開始インデックスを設定するにはどうすればよいですか?

分類Dev

XAxisの開始インデックスを設定するにはどうすればよいですか?

分類Dev

関数zインデックスを使用するときにアンカータグをクリック可能にするにはどうすればよいですか?

分類Dev

配列インデックスが動的に決定される配列内の特定のアイテムに対して双方向のデータバインディングを行うにはどうすればよいですか?

分類Dev

ProgressBarでデータバインディングを使用するにはどうすればよいですか?

分類Dev

データバインディングでngClassを使用するにはどうすればよいですか?

分類Dev

TargetNullValueをバインディングのフォルダーパスとして設定するにはどうすればよいですか?

分類Dev

Spring Cloud Stream 3.xの新しい機能バインディングスタイルを使用してスプリッターを設定するにはどうすればよいですか?

分類Dev

Qt Creatorで「malloc_error_breakにブレークポイントを設定してデバッグ」するにはどうすればよいですか?

分類Dev

Androidデータバインディングライブラリを使用してRecyclerViewでSortedListを使用するにはどうすればよいですか?

分類Dev

角度データバインディングを使用して、選択した無効なプロパティにチェックボックスをバインドするにはどうすればよいですか?

分類Dev

ngxデータバインディングを使用して、選択した無効なプロパティにチェックボックスをバインドするにはどうすればよいですか?

分類Dev

データバインディングを使用して、オブジェクトのリストボックスからテキストブロックにデータを表示するにはどうすればよいですか?

Related 関連記事

  1. 1

    インデックスに基づいてitemscontrolのデータテンプレートを変更するにはどうすればよいですか?

  2. 2

    ItemsControl内からItemsSource以外のクラスへのバインディングを取得するにはどうすればよいですか?

  3. 3

    データバインディングを使用してImageViewの背景として画像のURLを設定するにはどうすればよいですか?

  4. 4

    ItemsControlでItemTemplateからホスティングコンテナへのバインディングを設定するにはどうすればよいですか?(UWP)

  5. 5

    Azure Functionsの出力バインディングを使用してServiceBusメッセージのMessageIdを設定するにはどうすればよいですか?

  6. 6

    インデックスを変数として設定するにはどうすればよいですか?

  7. 7

    Scalaを使用してSparkでスライディングウィンドウランクを設定するにはどうすればよいですか?

  8. 8

    Flash AS3:構築されたグラフィックのZインデックスを変更するにはどうすればよいですか?

  9. 9

    インデックスをdata.lengthに設定するにはどうすればよいですか?

  10. 10

    UIViewのzインデックスまたはスタック順序を変更するにはどうすればよいですか?

  11. 11

    電話 + インターネットモデムを 1 つのデバイスとして設定するにはどうすればよいですか?

  12. 12

    Mac OS Xでカスタムキーバインディングとキーマクロを設定するにはどうすればよいですか?

  13. 13

    角度6のドロップダウンで双方向バインディングデータを設定するにはどうすればよいですか?

  14. 14

    MultiIndex pandas DataFrameでインデックス値を設定するにはどうすればよいですか?

  15. 15

    Reactでコンポーネントのzインデックスを変更するにはどうすればよいですか?

  16. 16

    Djangoを使用してドメイン名のnginxインデックスページを設定するにはどうすればよいですか?

  17. 17

    ObjectWriteStreamの開始インデックスを設定するにはどうすればよいですか?

  18. 18

    XAxisの開始インデックスを設定するにはどうすればよいですか?

  19. 19

    関数zインデックスを使用するときにアンカータグをクリック可能にするにはどうすればよいですか?

  20. 20

    配列インデックスが動的に決定される配列内の特定のアイテムに対して双方向のデータバインディングを行うにはどうすればよいですか?

  21. 21

    ProgressBarでデータバインディングを使用するにはどうすればよいですか?

  22. 22

    データバインディングでngClassを使用するにはどうすればよいですか?

  23. 23

    TargetNullValueをバインディングのフォルダーパスとして設定するにはどうすればよいですか?

  24. 24

    Spring Cloud Stream 3.xの新しい機能バインディングスタイルを使用してスプリッターを設定するにはどうすればよいですか?

  25. 25

    Qt Creatorで「malloc_error_breakにブレークポイントを設定してデバッグ」するにはどうすればよいですか?

  26. 26

    Androidデータバインディングライブラリを使用してRecyclerViewでSortedListを使用するにはどうすればよいですか?

  27. 27

    角度データバインディングを使用して、選択した無効なプロパティにチェックボックスをバインドするにはどうすればよいですか?

  28. 28

    ngxデータバインディングを使用して、選択した無効なプロパティにチェックボックスをバインドするにはどうすればよいですか?

  29. 29

    データバインディングを使用して、オブジェクトのリストボックスからテキストブロックにデータを表示するにはどうすればよいですか?

ホットタグ

アーカイブ