如何将图像和文本块添加到WPF ContentControl中

时间:2017-03-20 22:47:34

标签: c# wpf contentcontrol

我在WPF中有一个ContentControl,里面有一个图像

ContentControl myContentControl = new ContentControl();
myContentControl.Content = image;

如何在ContentControl内的图像旁边添加文本块? 谢谢。

2 个答案:

答案 0 :(得分:1)

您需要更改contentControl的属性ContentTemplate,以及ContentTemplate,这里有一些解释:

  

获取或设置用于显示ContentControl内容的数据模板。

您还需要创建一个表示数据的类,如下所示:

public class ImageInfo
{
    public string Caption { get; set; }
    public ImageSource Image { get; set; }
}

最好在XAML中创建ContentControl,如下所示:

    <ContentControl x:Name="cc">
        <ContentControl.ContentTemplate>
            <DataTemplate>
                <StackPanel>
                    <Image Source="{Binding Image}" />
                    <TextBlock Text="{Binding Caption}" />
                </StackPanel>
            </DataTemplate>
        </ContentControl.ContentTemplate>
    </ContentControl>

然后,将数据分配给ContentControl:

cc.Content = new ImageInfo() { Caption = "Hello", Image = new BitmapImage(new System.Uri("/Assets/User.jpg", UriKind.Relative)) };

答案 1 :(得分:1)

您正在做的事情似乎不熟悉MVVM: 请检查here

简易解决方案

但如果您想要丑陋的解决方案并在您的代码中创建UIElement - 请按照以下步骤操作:

    public static ContentControl CreateControl(string title, Uri path)
    {
        //Create your image
        BitmapImage bitmapImage = new BitmapImage(path);
        Image image = new Image()
        {
            Source = bitmapImage
        };

        //Create your Text
        TextBlock textB = new TextBlock()
        {
            Text = title
        };

        //Put them together
        StackPanel content = new StackPanel();
        content.Children.Add(image);
        content.Children.Add(textB);

        //Add this to the content control
        return new ContentControl()
        {
            Content = content
        };

    }