只是一个简短的问题,澄清一些疑问.当元素绑定到依赖项属性时,是否运行setter?
public string TextContent
{
get { return (string)GetValue(TextContentProperty); }
set { SetValue(TextContentProperty, value); Debug.WriteLine("Setting value of TextContent: " + value); }
}
public static readonly DependencyProperty TextContentProperty =
DependencyProperty.Register("TextContent", typeof(string), typeof(MarkdownEditor), new UIPropertyMetadata(""));
Run Code Online (Sandbox Code Playgroud)
...
<TextBox Text="{Binding TextContent}" />
Run Code Online (Sandbox Code Playgroud)
正如我注意到我的setter中的下面没有运行
Debug.WriteLine("Setting value of TextContent: " + value);
Run Code Online (Sandbox Code Playgroud) 我有一个datagrid,它获取如下数据:
public struct MyData
{
public string name { set; get; }
public string artist { set; get; }
public string location { set; get; }
}
DataGridTextColumn col1 = new DataGridTextColumn();
col4.Binding = new Binding("name");
dataGrid1.Columns.Add(col1);
dataGrid1.Items.Add((new MyData() { name = "Song1", artist = "MyName", location = "loc"}));
dataGrid1.Items.Add((new MyData() { name = "Song2", artist = "MyName", location = "loc2"}));
Run Code Online (Sandbox Code Playgroud)
问题是 - 每当用户尝试编辑单元格或拖动多个单元格时,应用程序都会抛出异常:
System.InvalidOperationException未处理
消息:此视图不允许使用'EditItem'.
为什么是这样?是因为输入数据的方式?
有任何想法吗?
谢谢!
我正在尝试使用 cutom 列表在数据网格上的 WPF 中进行数据绑定。我的自定义列表类包含一个 List 类型的私有数据列表。我无法公开此列表,但是索引器已公开用于查看和获取单个项目。我的自定义类如下所示:
public abstract class TestElementList<T> : IEnumerable
where T : class
{
protected List<T> Data { get; set; }
public virtual T Get(int index)
{
T item = Data[index];
return item;
}
public virtual void Set(int index, T item)
{
Data[index] = item;
}
...
}
Run Code Online (Sandbox Code Playgroud)
数据已绑定,但是当我尝试编辑它时,我得到“此视图不允许使用‘EditItem’。” 错误。在网络上进行广泛搜索时,我发现我可能还需要实现 IEditableCollectionView 接口。任何人都可以帮助我提供有关如何实现此接口的指示,或者建议任何其他更好的方法来在自定义列表上进行数据绑定。
提前致谢。
我以编程方式添加DataGrid:
System.Windows.Controls.DataGrid dataGrid = new System.Windows.Controls.DataGrid();
dataGrid.GridLinesVisibility = DataGridGridLinesVisibility.None;
dataGrid.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
dataGrid.Background = Brushes.White;
DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Width = 250;
textColumn.Header = "Account";
textColumn.Binding = new Binding("Account");
dataGrid.Columns.Add(textColumn);
Run Code Online (Sandbox Code Playgroud)
当我添加项目时:
Globals_Liker.list_datagrid [tabControl1.SelectedIndex] .Items.Add(Globals_Liker.list_item [tabControl1.SelectedIndex] [I]);
但如果我双击项目我有错误:
此视图不允许使用"EditItem".
如何使该错误不会弹出?