c# - 数据绑定(bind)到列表框

标签 c# json data-binding

“a.text”是从我的 JSON 响应中提取的。我试图在列表框中显示“a.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”绑定(bind)到列表框,但没有显示。

<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”绑定(bind)到列表框的想法?

任何帮助将不胜感激。

最佳答案

ListBox 的 ItemsSource 属性不应指向字符串,如 a.text,而应指向 ObservableCollection。

尝试这样的事情:

第 1 步:从 INotifyPropertyChanged 派生该代码类。

第二:你可以从here得到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);
}

第四:在字段的顶部,您必须使用“using”语句来导入 ObservableList。

然后,将列表框的 ItemSource 绑定(bind)到此列表,并使 TextBlock 的绑定(bind)仅绑定(bind)到默认的 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>

关于c# - 数据绑定(bind)到列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15921240/

相关文章:

c# - 当来自 db 的数据不好时是否应该抛出异常?

c# - 如何在 Windows8 笔记本电脑上禁用捏合缩放手势

c# - Active Directory PrincipalContext.ValidateCredentials 域消歧

ios - 如果对象的键不同,如何编写模型结构

.net - CollectionViewSource 当前项

c# - 在 C# 中从字典中过滤键值

json - Golang net/http 请求 Body 总是空的

ruby-on-rails - 使用火箭裤时如何配置JSON响应?

c# - WPF中如何实现双向数据绑定(bind)?

xaml - 在带有 MVVM 的 Windows Phone 8 上使用 Pivot 控件进行投标