Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据绑定不使用列表_C#_Data Binding_Mvvm - Fatal编程技术网

C# 数据绑定不使用列表

C# 数据绑定不使用列表,c#,data-binding,mvvm,C#,Data Binding,Mvvm,我正在开发一个Windows Phone应用程序。我正在将列表绑定到内容控件元素 <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}"/> <

我正在开发一个Windows Phone应用程序。我正在将列表绑定到内容控件元素

     <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>

在转换器中,我返回指定参数处的字符串。 我的mainview模型如下

      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);
        }
    }
私有列表字符串;
公共列表字符串
{
得到
{
返回字符串;
}
设置
{
字符串=值;
RaisePropertyChanged(“字符串”);
}
}
/// 
///初始化MainViewModel类的新实例。
/// 
公共主视图模型()
{
字符串=新列表();
}
专用ICommand和clickCommand;
公共ICommand ClickCommand
{
得到
{
clickCommand=新建中继命令(单击);
返回clickCommand;
}
}
私有void Click()
{
对于(int i=0;i<10;i++)
{
string abc=“这是string”+i.ToString();
字符串。添加(abc);
}
}
我希望内容控件显示“This is string 0”,但它显示的是无字符串(当列表为空时,我从转换器返回)。当我在启动时填充列表时,即在视图模型的构造函数中将项目添加到列表中时,不会出现此问题。为什么会这样


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

您需要使用
ObservableCollection
而不是
列表
,以使视图检测添加和删除的列表项

当您从列表中添加或删除项时,ObservableCollection触发CollectionChanged事件。 列表不会触发事件


您的视图(XAML)永远不会获得更改,这就是为什么您必须使用ObservableCollection。正如ThumbMunkey所说。

也不使用ObservableCollection。问题可能是将内容控件与列表绑定,然后对其进行转换。如果我使用Content={Binding Strings[0]},它将显示更改。