绑定到列表框
本文关键字:列表 绑定 | 更新日期: 2023-09-27 18:08:38
"a.text"是从我的JSON响应中提取的。我试图在列表框中显示"。text"。
List<Feature> features = App.dResult.directions[0].features;
foreach (Feature f in features)
{
Attributes a = f.attributes;
MessageBox.Show(a.text);
directionListBox.ItemsSource = a.text;
}
我尝试使用绑定"a.text"到列表框,但没有显示。
<ListBox x:Name="directionListBox" ItemsSource="{Binding a.text}" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding a.text}" Style="{StaticResource PhoneTextTitle2Style}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
谁能给我提供一些关于如何绑定"a.text"到列表框的想法?
ListBox的ItemsSource属性不应该像a.text那样指向String,而应该指向ObservableCollection。
试试这样写:
第一个:从INotifyPropertyChanged中派生代码类
第二:你可以从这里获得ObservableList或者使用ObservableCollection。
第三:然后使用以下代码(未经测试,但可能有效):
ObservableList<String> featList = new ObservableCollection<String>();
public event PropertyChangedEventHandler PropertyChanged;
public void InvokePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
public ObservableList<String> FeatList
{
get { return featList; }
set
{
featList = value;
InvokePropertyChanged("FeatList");
}
}
List<Feature> features = App.dResult.directions[0].features;
foreach (Feature f in features)
{
Attributes a = f.attributes;
//MessageBox.Show(a.text);
FeatList.add(a.text);
}
第4条:在字段的顶部,你必须使用'using'语句来导入ObservableList。
然后,将列表框的ItemSource绑定到这个列表,并使TextBlock的Binding绑定到默认的DataContext,这将是列表中的字符串:
<ListBox x:Name="directionListBox" ItemsSource="{Binding FeatList}" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding}" Style="{StaticResource PhoneTextTitle2Style}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>