列表视图中的文本块不显示绑定数据 - WPF XAML

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表视图中的文本块不显示绑定数据 - WPF XAML相关的知识,希望对你有一定的参考价值。

我正在尝试将数据与listview中的文本块绑定,但它不显示数据。但是,当我运行应用程序时,我可以看到列表已创建,但它显示空数据。请参阅下图中的空白数据列表:

Application: Bind data do not show


这是我的XAML代码:

<ListView Margin="20,0,0,20" x:Name="listView_attachedFiles">
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Width="100" Text="{Binding AttachedFiles, Mode=TwoWay, NotifyOnTargetUpdated=True}">
                <Hyperlink>
                </Hyperlink>
            </TextBlock>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

这是C#代码

public class ListviewModel : INotifyPropertyChanged
{
    private ObservableCollection<string> _attachedfiles;
    public ObservableCollection<string> AttachedFiles
    {
        get { return _attachedfiles; }
        set
        {

            _attachedfiles = value;
            OnPropertyChanged("AttachedFiles");

        }
    }

    public ListviewModel()
    {
        AttachedFiles = new ObservableCollection<string>();
    }

    public event PropertyChangedEventHandler PropertyChanged;

    /// <summary>
    /// Raises this object's PropertyChanged event.
    /// </summary>
    /// <param name="propertyName">The property that has a new value.</param>
    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

这是我填充数据的方式:

// I'm calling this method to attach the list of filenames       
    private void ExecuteMethod_AttachFile(object Parameter)
    {

        OpenFileDialog ofd = new OpenFileDialog();
        ofd.Multiselect = true;
        if (ofd.ShowDialog() == true)
        {
            AttachedFileLocation = ofd.FileNames.ToList();

            // adding bind data to the list of viewmodel: adding attachefile names
            foreach (var file in AttachedFileLocation)
            {
                FileInfo info = new FileInfo(file);
                DMS_Form.Instance.ListofViewModel.AttachedFiles.Add(info.Name + "  X");
            }

        }
    }

这是我如何在WPF表单的构造函数中附加itemssource引用。

//Binding the list of attached files with the listview
listView_attachedFiles.ItemsSource = ListofViewModel.AttachedFiles;

请帮我弄明白我在哪里弄错了。任何帮助将受到高度赞赏。谢谢

答案

经过几个小时的研究,我意识到我的代码有点问题。解决方案是首先在WPF表单构造函数方法中定义数据上下文,即

listView_attachedFiles.DataContext = ListofViewModel; 

第二次更新此XAML代码

<TextBlock Width="100" Text="{Binding AttachedFiles, Mode=TwoWay, NotifyOnTargetUpdated=True}">

使用此XAML代码。

<TextBlock Width="100" Text="{Binding}">

现在保存并构建应用程序,运行它。

以上是关于列表视图中的文本块不显示绑定数据 - WPF XAML的主要内容,如果未能解决你的问题,请参考以下文章

WPF 数据网格文本列中的绑定

WPF将单个文本框绑定到集合对象或数组中的元素

WPF-将列表绑定到列表视图

如何将 DataGrid 中的文本框绑定到 Wpf 中的列表?

选定的 WPF 列表框绑定仅更新视图中的项目

C# WPF - Listview 绑定不起作用