gpt4 book ai didi

c# - DataBinding 不适用于列表

转载 作者:行者123 更新时间:2023-12-03 10:37:16 28 4
gpt4 key购买 nike

我正在开发一个 Windows Phone 应用程序。我将 List 绑定(bind)到内容控制元素。

     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Button Width="100" Margin="163.558,67.567,192.441,453.612" Content="Click" Command="{Binding ClickCommand}"/>
<ContentControl Content="{Binding Strings , Converter={StaticResource Converter},ConverterParameter=0,Mode=TwoWay,UpdateSourceTrigger=Default}"/>
</Grid>

在转换器中,我返回指定参数的字符串。
我的主视图模型如下
      private List<string> strings;

public List<string> Strings
{
get
{
return strings;
}

set
{
strings = value;

RaisePropertyChanged("Strings");
}
}


/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
Strings = new List<string>();
}

private ICommand clickCommand;

public ICommand ClickCommand
{
get
{
clickCommand = new RelayCommand(Click);

return clickCommand;
}
}

private void Click()
{
for (int i = 0; i < 10; i++)
{
string abc = "This is string" + i.ToString();

Strings.Add(abc);
}
}

我期待内容控制显示 'This is string 0' ,但它显示 没有字符串 (当列表为空时,我从转换器返回这个)。当我在启动时填充列表时不会出现这个问题,即将项目添加到 View 模型构造函数的列表中。为什么会这样?

如果我绑定(bind)元素而不是列表( {Binding Strings[0]} ),它工作正常。

最佳答案

您需要使用 ObservableCollection<T>而不是 List<T>为了使 View 检测添加和删除的列表项

关于c# - DataBinding 不适用于列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22913373/

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