将List <string>的元素绑定到文本块

我正在尝试使车轮旋转。我有5个自定义的文本块,即带有值列表的文本文件(它可能包含1-1000个项目)。读取文件后,我有一个'List fileValues'及其值。我决定创建另一个“列表轮”,该列表轮一次最多包含5个元素,并有望绑定到文本块。

当按下旋转按钮时,将删除“ wheel”的最后一个元素,并将“ values”中的新元素添加到“ wheel”列表的开头。

为了使UI能够响应列表中的更改,最好将“滚轮”中的每个元素绑定到UI上的相应文本块。但是到目前为止,我一直试图做的事情没有奏效。

这是我尝试做的事情(代码有点脏,但是我首先尝试使其工作)。

5个自定义文本块

<TextBlock Name="Value1" TextWrapping="WrapWithOverflow"/>
<TextBlock Name="Value2" TextWrapping="WrapWithOverflow"/>
<TextBlock Name="Value3" TextWrapping="WrapWithOverflow"/>
<TextBlock Name="Value4" TextWrapping="WrapWithOverflow"/>
<TextBlock Name="Value5" TextWrapping="WrapWithOverflow"/>

实现INotifyCollectionChanged接口的ObservableList

class ObservableList : INotifyCollectionChanged, IEnumerable
{
    private readonly List<string> _valuesList;

    public string First
    {
        get { return _valuesList.First(); }
    }

    public string Last
    {
        get { return _valuesList.Last(); }
    }

    public ObservableList()
    {
        this._valuesList = new List<string>();
    }

    public string this[Int32 index]
    {
        get
        {
            if (_valuesList.Count == 0 || index + 1 > _valuesList.Count)
            {
                return "------";
            }
            return _valuesList[index];
        }
    }

    public void AddLast(string value)
    {
        _valuesList.Add(value);
        OnNotifyCollectionChanged();
    }

    public void AddFirst(string value)
    {
        _valuesList.Insert(0, value);
        OnNotifyCollectionChanged();
    }

    public void RemoveFirst()
    {
        _valuesList.RemoveAt(0);
        OnNotifyCollectionChanged();
    }

    public void RemoveLast()
    {
        _valuesList.Remove(_valuesList.Last());
        OnNotifyCollectionChanged();
    }

    public event NotifyCollectionChangedEventHandler CollectionChanged;
    public void OnNotifyCollectionChanged()
    {
        if (CollectionChanged != null)
        {
            CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
        }
    }

    public IEnumerator GetEnumerator()
    {
        return (_valuesList as IEnumerable).GetEnumerator();
    }
}

XAML代码隐藏

public partial class MainWindow : Window
{
    private List<string> _values = new List<string>();
    private ObservableList _uiValues = new ObservableList();

    public MainWindow()
    {
        InitializeComponent();

        Value1.DataContext = _uiValues[0];
        Value2.DataContext = _uiValues[1];
        Value3.DataContext = _uiValues[2];
        Value4.DataContext = _uiValues[3];
        Value5.DataContext = _uiValues[4];

    }

    private void LoadFileBtn_Click(object sender, RoutedEventArgs e)
    {
        //Loads text file and fills _values
    }

    private void SpinBtn_Click(object sender, RoutedEventArgs e)
    {
        InitUiTextBlocks();

        //Spin simulation
    }

    private void InitUiTextBlocks()
    {
        _uiValues.Clear();
        for (int i = 0; i < 5; ++i)
        { 
            //Nothing appears on UI and CollectionChanged event is null
            _uiValues.AddLast(_values.First());
            _values.RemoveAt(0);
        }
    }
}

我尝试使用“ ObservableCollection”,但是效果是一样的。用户界面上未显示任何内容。实际上,我无法想象如何将每个List元素绑定到特定的Label。甚至有可能进行这种绑定吗?

夜晚

在XAML中执行以下操作:

<Label Name="some_name" Content="{Binding SomeStingProperty}"/>

在后面的代码中,有一个

public string SomeStringProperty {get; set;}

您也可以绑定到集合,如果是集合,ObservableCollection它将在更改时更新。

搜索基本的XAML绑定,否则:)

(附带说明,它更干净,我认为它是XAML,我个人不喜欢在后面的代码中使用它...)

作为附带说明,并且完全自我宣传,这里有2篇文章可能会有所帮助:

  1. 了解所选值
  2. 大的mvvm模板

如果您是初学者,第二个可能会有点过头,但是仍然值得一读。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将List <string>绑定到文本框

来自分类Dev

XAML将String <List>或String []绑定到<Image>

来自分类Dev

WPF:将Dictionary <string,List <DataClass >>绑定到嵌套控件

来自分类Dev

将List <string>绑定到MvxActivity中的MvxListView

来自分类Dev

WPF:将Dictionary <string,List <DataClass >>绑定到嵌套控件

来自分类Dev

将组合框绑定到wpf中的List <string>

来自分类Dev

将 Cell 绑定到 Dictionary<string, List<object>>

来自分类Dev

WPF将滑块的鼠标位置值绑定到文本块

来自分类Dev

将List <string>传递到SQL参数

来自分类Dev

是否可以将包含List <String>的List <Object>绑定到DataGrid

来自分类Dev

如何将文本框的长度绑定到文本块?

来自分类Dev

Jackson json将字符串和数组绑定到Map中的List <String>

来自分类Dev

将数据从属性绑定到文本块-MVVM Light和WPF

来自分类Dev

将功能绑定到列表框C#WPF中的文本块

来自分类Dev

将文本块的可见性绑定到Stack.Any

来自分类Dev

将文本块绑定到VM中没有的静态属性

来自分类Dev

如何使用嵌套字典作为源将文本块绑定到组合框

来自分类Dev

通过将List <String,Int32>的键绑定到ListBox并将选定的项目值绑定到ComboBox

来自分类Dev

WPF ComboBox绑定到List <string>

来自分类Dev

如何将文本块与属性绑定

来自分类Dev

将 2 个组合框绑定到 Dict<string, string[]>

来自分类Dev

Java 8使用stream()将List <Object>提取/覆盖到Map <String,List <String >>

来自分类Dev

将List <Map <String,Object >>到List <Map <String,Object >>按键分组,且为null

来自分类Dev

根据块大小(行数)将List <string>拆分为不同的List

来自分类Dev

Angular 2-将输入表单数据绑定到SVG文本元素

来自分类Dev

如何将List <string>绑定到asp.net中另一个gridview内的gridview

来自分类Dev

一种简单的方法,将列表框绑定到wpf中的list <string>,并进行安全更新

来自分类Dev

将C#中的变量数据绑定到WPF应用程序中的文本块不起作用

来自分类Dev

UWP - 我可以将数据模板中的文本块绑定到它外部的网格列的宽度吗?

Related 相关文章

  1. 1

    将List <string>绑定到文本框

  2. 2

    XAML将String <List>或String []绑定到<Image>

  3. 3

    WPF:将Dictionary <string,List <DataClass >>绑定到嵌套控件

  4. 4

    将List <string>绑定到MvxActivity中的MvxListView

  5. 5

    WPF:将Dictionary <string,List <DataClass >>绑定到嵌套控件

  6. 6

    将组合框绑定到wpf中的List <string>

  7. 7

    将 Cell 绑定到 Dictionary<string, List<object>>

  8. 8

    WPF将滑块的鼠标位置值绑定到文本块

  9. 9

    将List <string>传递到SQL参数

  10. 10

    是否可以将包含List <String>的List <Object>绑定到DataGrid

  11. 11

    如何将文本框的长度绑定到文本块?

  12. 12

    Jackson json将字符串和数组绑定到Map中的List <String>

  13. 13

    将数据从属性绑定到文本块-MVVM Light和WPF

  14. 14

    将功能绑定到列表框C#WPF中的文本块

  15. 15

    将文本块的可见性绑定到Stack.Any

  16. 16

    将文本块绑定到VM中没有的静态属性

  17. 17

    如何使用嵌套字典作为源将文本块绑定到组合框

  18. 18

    通过将List <String,Int32>的键绑定到ListBox并将选定的项目值绑定到ComboBox

  19. 19

    WPF ComboBox绑定到List <string>

  20. 20

    如何将文本块与属性绑定

  21. 21

    将 2 个组合框绑定到 Dict<string, string[]>

  22. 22

    Java 8使用stream()将List <Object>提取/覆盖到Map <String,List <String >>

  23. 23

    将List <Map <String,Object >>到List <Map <String,Object >>按键分组,且为null

  24. 24

    根据块大小(行数)将List <string>拆分为不同的List

  25. 25

    Angular 2-将输入表单数据绑定到SVG文本元素

  26. 26

    如何将List <string>绑定到asp.net中另一个gridview内的gridview

  27. 27

    一种简单的方法,将列表框绑定到wpf中的list <string>,并进行安全更新

  28. 28

    将C#中的变量数据绑定到WPF应用程序中的文本块不起作用

  29. 29

    UWP - 我可以将数据模板中的文本块绑定到它外部的网格列的宽度吗?

热门标签

归档