我尝试在DataGrid中绑定一个CheckBox,但是在我将鼠标悬停在DoImport
上时得到的设计器
由于未知的datacontext ,无法解析符号'DoImport'
我的代码是
<Window x:Class="MyWindow">
<Grid>
<DataGrid x:Name="MyGrid" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Import"
Binding="{Binding Path=DoImport,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
public partial class MyWindow : Window, INotifyPropertyChanged {
public MyWindow(ObvervableCollection<Part> parts) {
_parts = parts;
MyGrid.DataContext = _parts;
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string name) {
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
private ObservableCollection<Part> _parts;
public ObservableCollection<Part> Parts {
get { return _parts; }
set
{
_parts = value;
OnPropertyChanged("Parts");
}
}
}
_parts
是填充DataGrid的项目集合。 Part
类是:
public class Part {
public bool DoImport { get; set; }
}
答案 0 :(得分:2)
设计人员无法向MyWindow构造函数提供ObvervableCollection<Part>
实例,因为它不知道如何。所以你的构造函数永远不应该在设计器中调用。
这就是为什么设计师“由于未知的datacontext而无法解析符号'DoImport'”。
Visual Studio中的设计人员需要一个无参数的默认构造函数才能正常工作。
也许你应该检查出来: http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/sample-data-in-the-wpf-and-silverlight-designer.aspx 或者更好......让我们为您创建设计样本数据。