0

我是 XAML 和 C# 的初学者,我有下面的代码,但我不知道要修改什么来解决这两个错误。

Requested value 'PropertyChanged' was not found.

'Cautare.get' must declare a body because it is not marked abstract, extern, or partial

这是 XAML

<TextBox x:Name="textbutton1" Text="{Binding Cautare, UpdateSourceTrigger=PropertyChanged}"/>
<ListBox Grid.Row="1" x:Name="ListBox" Margin="0,0,-12,0" ItemsSource="{Binding Sursa.View}">

和代码隐藏

public partial class MainPage : PhoneApplicationPage
    {
        public CollectionViewSource Sursa { get; set; }
        public string Cautare { get;
                set
                {
                    if (!string.IsNullOrEmpty(Cautare))
                    Filtreaza();
                    Sursa.View.Refresh(); 
                }
        }
        private void Filtreaza()
        {
            Sursa.Filter -= new FilterEventHandler(Filtru);
            Sursa.Filter += new FilterEventHandler(Filtru);
        }
        private void Filtru(object sender, FilterEventArgs e)
        {
            var src = e.Item as Rind;
            if (src == null) e.Accepted = false;
            else if (src.Text != null && !src.Text.Contains(Cautare)) e.Accepted = false;
        }
        public ObservableCollection<Rind> Lista { get; set; }

        public MainPage()
        {
            Lista = new ObservableCollection<Rind>
                        {
                            new Rind { Text = "abcd"},
                            new Rind { Text = "asdf"},
                            new Rind { Text = "asdzx"},
                            new Rind { Text = "adffgd"},
                            new Rind { Text = "asdfgea"},
                        };
            InitializeComponent();
            Sursa = new CollectionViewSource();
            Sursa.Source = Lista;
            DataContext = this;
        }
        public class Rind
        {
            public string Text { get; set; }
        }
    }

我已经阅读了有关 CollectionViewSource 和绑定的其他类似问题。

我的直觉说这是一个普遍的问题,但经过两个小时的测试,我已经进入了大脑阻塞循环,无法再清楚地“看到”它了。所以我在寻求帮助。谢谢!

4

1 回答 1

0

嘿@acadea 首先你已经了解了基础知识。比如属性如何真正工作并定义你的错误“Cautare.get'必须声明一个主体,因为它没有标记为抽象、外部或部分”是因为没有定义 Cautare 属性的获取但是你正在定义它的集合。所以像这样定义Cautare..

 public string Cautare { get{ return SomeStringHere ;}
            set
            {  // you can set some value here
                if (!string.IsNullOrEmpty(Cautare))
                Filtreaza();
                Sursa.View.Refresh(); 
            }
    }

第二个错误是由于您的代码中没有实现属性更改,但是您在文本块中使用了它。这里的问题是您还必须研究数据绑定基础知识。希望它可以为您提供一个开始的方法..解决您的问题。 .

于 2013-07-22T07:08:41.700 回答