gpt4 book ai didi

c# - 绑定(bind)到 ObservableCollection

转载 作者:行者123 更新时间:2023-11-30 16:54:27 25 4
gpt4 key购买 nike

<分区>

我正在尝试做一些非常简单的事情:我想在 ItemsControl 中显示一个 ObservableCollection。我还希望用户能够编辑 ObservableCollection 中的字符串。

我的 View 模型非常简单:

public class MainViewModel : ViewModelBase
{
public ObservableCollection<string> Values { get; set; }

public MainViewModel()
{
Values = new ObservableCollection<string> { "foo", "bar" };
}
}

在我看来,我为 ItemsControl 定义了一个 DataTemplate 以在每个项目中显示一个文本框,这里没问题:

<ItemsControl ItemsSource="{Binding Values}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type sys:String}">
<TextBox Text="{Binding Path=., UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

一切似乎都很顺利,我可以在我的 View 中看到我的 ObservableCollection 的内容。但是,当我编辑文本框中的文本时,我的 ObservableCollection 没有更新,值仍然相同。

我发现唯一的解决方法是创建一个类:

public class StringWrapper
{
public string Value { get; set; }
}

然后我将 ObservableCollection 的类型更改为 ObservableCollection<StringWrapper> ,并且在我的 DataTemplate 中,我将 TextBox 的 Text 属性绑定(bind)到 Value。它有效,但它很丑。

所以我的问题是,有没有办法将 ObservableCollection 绑定(bind)到 ItemsControl 并能够更新值?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com