質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

受付中

カスタムコントロールのテンプレート内のテンプレートにプロパティを届けたい

yamaj
yamaj

総合スコア1

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1回答

0リアクション

2クリップ

347閲覧

投稿2022/07/28 23:44

前提

.NET6のWPFでカスタムコントロールを作りたいと思い、試行錯誤しています。
スタイルやテンプレートの理解が不足しているせいだとは思うのですが、カスタムコントロールのプロパティを、カスタムコントロール内に配置したItemsControlのItemTemplateまで渡す方法がわかりません。
どういった方法で実現させれば良いでしょうか。

やりたいこと

下記ソースにて、ItemsControlのItemTemplateまでカスタムコントロールのプロパティ(TextColor)を届けたい。

C#

<Style TargetType="{x:Type local:ScrollView}"> <Setter Property="TextColor" Value="Red"/> <!-- これを渡したい --> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type local:ScrollView}"> <Border BorderBrush="Black" BorderThickness="1" CornerRadius="3"> <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Hidden" VirtualizingPanel.ScrollUnit="Pixel"> <ItemsControl ItemsSource="{TemplateBinding ItemsSource}"> <ItemsControl.Template> <ControlTemplate TargetType="{x:Type ItemsControl}"> <ItemsPresenter/> </ControlTemplate> </ItemsControl.Template> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <!-- ここの色を上で設定したい --> <TextBlock Text="{Binding}"Foreground="{Binding TextColor}" TextAlignment="Center"/> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </ScrollViewer> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style>

C#

public class ScrollView : Control { /////////////////////////////////// #region // 追加プロパティ /////////////////////////////////// /// <summary> /// アイテムソースの登録 /// </summary> public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register("ItemsSource", typeof(IEnumerable<string>), typeof(ScrollView), new PropertyMetadata()); /// <summary> /// アイテムソース取得・設定 /// </summary> public IEnumerable<string> ItemsSource { get { return (IEnumerable<string>)GetValue(ItemsSourceProperty); } set { SetValue(ItemsSourceProperty, value); } } /// <summary> /// テキスト色の登録 /// </summary> public static readonly DependencyProperty TextColorProperty = DependencyProperty.Register("TextColor", typeof(Brush), typeof(ScrollView), new PropertyMetadata(Brushes.Black)); /// <summary> /// テキスト色取得・設定 /// </summary> public Brush TextColor { get { return (Brush)GetValue(TextColorProperty); } set { SetValue(TextColorProperty, value); } } #endregion /////////////////////////////////// static ScrollView() { DefaultStyleKeyProperty.OverrideMetadata(typeof(ScrollView), new FrameworkPropertyMetadata(typeof(ScrollView))); } }

補足情報(FW/ツールのバージョンなど)

Visual Studio 2022
WPF

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/08/28 19:04

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです