WPF中包含画布和标签绑定的ListBox[英] ListBox containing canvas and Label binding in WPF

问题描述

你好,

我在 xaml 中定义了一个列表框,如下所示

<ListBox 名称="lstTemplate"  高度="270" ><ListBox.ItemTemplate><DataTemplate><StackPanel 方向="垂直"><Canvas/><标签/></StackPanel></DataTemplate></ListBox.ItemTemplate><ListBox.ItemsPanel><ItemsPanelTemplate><WrapPanel IsItemsHost="True" 方向="水平"  /></ItemsPanelTemplate></ListBox.ItemsPanel></ListBox>

现在在代码集后面(我不确定如何在 xaml 中执行此操作)
lstTemplate.ItemSource=Ada.GetTem();
lstTemplate.DisplayMemberPath="内容";

它将在列表框中显示内容.
现在我想要什么.
"内容"是我要解析的 xaml 字符串,创建一个元素并添加到列表框中,在我创建的每个元素下方,我想显示标签名称.

此外,如果"内容"为空,我添加我自己的默认字符串,这反过来将显示默认画布
所以我把我的代码改成了这样

var CanvasContent = 来自 s in Adapter.GetTemp() select s.Contents;foreach (string tempCanvasstring in CanvasContent){if (tempCanvasstring == string.Empty){画布字符串 = 画布字符串 1;}其他{画布字符串 = 临时画布字符串;}FrameworkElement fe = XamlReader.Parse(canvasstring) as FrameworkElement;// lstTemplate.Items.Add(fe);}var CanvasName = 来自 s in 适配器.GetTemp() 选择 s.Name;foreach (string tempCanvasstring in CanvasName){// lstTemplate.Items.Add(tempCanvasstring);}



现在完全迷失了如何将 fe 元素和 s.name 绑定到我在 xaml 文件中定义的画布和标签.

推荐答案

您可以创建包含所需详细信息的类:


public class MyElement{public FrameworkElement 元素 { get;设置;}public string 名称 { get;设置;}}

创建已创建类的集合:


private ObservableCollection<MyElement>我的收藏;

初始化集合以包含想要的元素及其名称,并将 ListBox 的 ItemsSource 设置为该集合:


lstTemplate.ItemsSource = myCollection;

在 XAML 中,您可以按如下方式绑定数据:


<ListBox 名称="lstTemplate"  高度="270" ><ListBox.ItemTemplate><DataTemplate><StackPanel 方向="垂直"><ContentControl Content="{绑定元素}" /><标签 Content="{Binding Name}" /></StackPanel></DataTemplate></ListBox.ItemTemplate><ListBox.ItemsPanel><ItemsPanelTemplate><WrapPanel IsItemsHost="True" 方向="水平"  /></ItemsPanelTemplate></ListBox.ItemsPanel></ListBox>

本文地址:https://www.itbaoku.cn/post/1394881.html