

[C#のWPFでTemplateをコードで作る](https://araramistudio.jimdo.com/2016/12/07/wpf%E3%81%A7template%E3%82%92%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E4%BD%9C%E3%82%8B/)  
上記ページを参考にコードでDataTemplateを作り表示されました。

[code]

    FrameworkElementFactory textBlock = new FrameworkElementFactory(typeof(TextBlock), "TextBlock");
    textBlock.SetValue(TextBlock.MarginProperty, new Thickness(5, 5, 5, 5));
    textBlock.SetValue(TextBlock.TextProperty, "テキスト本文");
    
    FrameworkElementFactory image = new FrameworkElementFactory(typeof(Image), "Image");
    BitmapImage bitmapImage = new BitmapImage(new Uri(イメージのURL));
    imageElement.SetValue(Image.SourceProperty, bitmapImage);
    
    FrameworkElementFactory stackPanel = new FrameworkElementFactory(typeof(StackPanel), "StackPanel");
    stackPanel.AppendChild(textBlock);
    stackPanel.AppendChild(image);
    
    DataTemplate template = new DataTemplate();
    template.VisualTree = stackPanel;
    
[/code]

テキスト本文やbitmapImageを変えたい場合、どのようにすべきなのでしょうか？  
また、DataTemplateからAppendChildの要素を取得、設定することは可能でしょうか？


CC BY-SA 3.0
2018-02-20T02:21:44.460
41855
2022-08-02T09:03:40.267
2018-02-20T02:27:10.800
3060
12842
question
c# wpf
DataTemplateに追加したAppendChildの値を取得、設定したい


`DataTemplate`なのですから、まずは`DataContext`から`BindingBase`を使用してプロパティを操作するべきかと思います。

[code]

    textBlock.SetBinding(TextBlock.TextProperty, new Binding("バインドするプロパティ"));
    
[/code]

またイベントハンドラーを使用することもできます

[code]

    imageElement.AddHandler(FrameworkElement.LoadedEvent, (RoutedEventHandler)imageElement_Loaded);
    
    static void imageElement_Loaded(object sender, RoutedEventArgs e)
    {
        var imageElement = (Image)sender;
        // 何らかの処理
    }
    
[/code]


CC BY-SA 3.0
2018-02-20T11:31:41.223
41868
2018-02-20T11:31:41.223
5750
41855
answer