以下是课程代码:
public class listboxitem
{
public string textmenu { get; set; }
public string logomenu { get; set; }
}
但是当我将它绑定在文本框上时,它没有显示......
我有这些数组:
private string[] Logo_menu_array = { "/Assets/star-6-48.ico", "/Assets/note-48.ico", "/Assets/note-48.ico", "medal-48.ico", "joystick-48.ico" };
private string[] Text_menu_array={"Phổ biến trên YouTuBe","Âm nhạc","Thể thao","Trò chơi"};
//load menu
public void Load_Menu()
{
List<listboxitem> text = new List<listboxitem>();
listboxitem items=new listboxitem();
for(int i=0;i<Text_menu_array.Length&& i<Logo_menu_array.Length;i++)
{
items.textmenu=i.ToString();
}
for(int j=0;j<Logo_menu_array.Length;j++)
{
items.logomenu = j.ToString();
}
text.Add(items);
}
这个网站没有同意显示更多代码。我很难问这些问题。 我添加了代码:
<ListBox Name="lst_menu" Foreground="Red">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Image Source="{Binding logomenu}"></Image>
<TextBlock Text="{Binding textmenu}"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在这里加载:
public MainPage()
{
this.InitializeComponent();
//get menu
List<listboxitem> menu_list = new List<listboxitem>();
Load_Menu();
lst_menu.ItemsSource = menu_list;
}
答案 0 :(得分:2)
这里有一些事情......
首先,我们需要查看XAML以了解如何在UI中绑定它。我假设你有类似的东西:
<ListBox ItemSource="{Binding Items}"/>
然后是一个展示这些的模板。
在您的代码中,您有一个名为text的List对象,该对象仅存在于您的方法中。您需要将此值分配给视图模型中可绑定的属性 - 基于以上内容:
public List<ListItem> Items {get;set;}
此属性应触发INotifyPropertyChanged中定义的PropertyChanged,以便在您的类上实现。 Implementing INotifyPropertyChanged
这将为您提供基础知识。如果要动态控制此集合 - 即在运行时更改项目 - 则应调查ObservableCollection。
修改强> 根据您的完整代码列表,使用后面的代码。您正在将lst_menu.ItemsSource设置为空List。你的Load_Menu()构建了一个集合,但没有返回它。
public List<listboxitem> Load_Menu()
{
List<listboxitem> text = new List<listboxitem>();
listboxitem items=new listboxitem();
for(int i=0;i<Text_menu_array.Length&& i<Logo_menu_array.Length;i++)
{
items.textmenu=i.ToString();
}
for(int j=0;j<Logo_menu_array.Length;j++)
{
items.logomenu = j.ToString();
}
text.Add(items);
return text;
// Note you will only ever return one item here - check the logic
}
然后在你的构造函数中:
List<listboxitem> menu_list = Load_Menu();
lst_menu.ItemsSource = menu_list;
假设您希望使用数组来构建集合,请尝试使用以下内容进行构建菜单:
List<listboxitem> text = new List<listboxitem>();
for(int i =0; i< Math.Min(Logo_menu_array.Length, Text_menu_array.Length, i++)
{
var l = new listboxitem();
l.logomenu = Logo_menu_array[i];
l.textmenu = Logo_menu_array[i];
}
return text;
我希望这会有所帮助。