Sliverlight onetime,单项绑定,双向绑定的问题(附实验代码)使用datagrid绑定一个数据源。
ObservableCollection<SLModelCategory> ListCategory = new ObservableCollection<SLModelCategory>();
dataGrid1.ItemsSource = ListCategory;其中ListCategory中的SLModelCategory类实现了INotifyPropertyChanged,部分代码:
public int ID
{
set
{
_id = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("ID"));
}
}
get { return _id; }
}dataGrid1中绑定代码如下:
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Binding="{Binding Mode=OneTime, Path=ID}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" IsReadOnly="False" />
打印数据源信息:
private void button2_Click(object sender, RoutedEventArgs e)
{
string s = "";
foreach (var item in ListCategory)
{
s += item.ID.ToString();
} textBlock1.Text = s;
}
然后,当我在datagrid上直接修改数据后,再打印数据源,发现,数据源也改变了。
无论我用的是onetime,oneway,twoway,都是一样的结果。求解释。
ObservableCollection<SLModelCategory> ListCategory = new ObservableCollection<SLModelCategory>();
dataGrid1.ItemsSource = ListCategory;其中ListCategory中的SLModelCategory类实现了INotifyPropertyChanged,部分代码:
public int ID
{
set
{
_id = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("ID"));
}
}
get { return _id; }
}dataGrid1中绑定代码如下:
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Binding="{Binding Mode=OneTime, Path=ID}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" IsReadOnly="False" />
打印数据源信息:
private void button2_Click(object sender, RoutedEventArgs e)
{
string s = "";
foreach (var item in ListCategory)
{
s += item.ID.ToString();
} textBlock1.Text = s;
}
然后,当我在datagrid上直接修改数据后,再打印数据源,发现,数据源也改变了。
无论我用的是onetime,oneway,twoway,都是一样的结果。求解释。
ObservableCollection<SLModelCategory> ListCategory = new ObservableCollection<SLModelCategory>();
dataGrid1.ItemsSource = ListCategory;哥们你这每次都被实例化了
呢来的数据源啊