很抱歉一个非常具体的问题,机器人为什么VS2008和VS2010崩溃了这段代码?我虽然使用ObjectDataProvider来绑定属性是很常见的。我在网上很多地方都看到了一些例子,但是我尝试使用它,我得到了异常,我的VS关闭了。
那么,我的代码出了什么问题?我应该为VS注册一个错误吗?
<Window x:Class="ShortcutsManagementAddin.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ShortcutsManagementAddin"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<ObjectDataProvider x:Key="Window1" ObjectType="{x:Type local:Window1}" />
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="*" />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="30" />
</Grid.ColumnDefinitions>
<TreeView ItemsSource="{Binding Source={StaticResource Window1}, Path=Categories}"></TreeView>
</Grid>
</Window>
namespace ShortcutsManagementAddin
{
public class Shortcut
{
public string CategoryName;
}
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
private List<Shortcut> categories = new List<Shortcut>();
public List<Shortcut> Categories
{
get { return categories; }
}
public Window1()
{
categories.Add(new Shortcut { CategoryName = "Category 1" });
categories.Add(new Shortcut { CategoryName = "Category 2" });
categories.Add(new Shortcut { CategoryName = "Category 3" });
categories.Add(new Shortcut { CategoryName = "Category 4" });
categories.Add(new Shortcut { CategoryName = "Category 5" });
InitializeComponent();
}
}
}
答案 0 :(得分:0)
从您的代码示例中,您似乎正在尝试从Window1
的XAML中创建Window1
的实例。鉴于这将导致无限循环,我可以看到崩溃应用程序或Visual Studio。
如果要将集合的成员绑定到TreeView
,最好创建一个单独的类(将包含列表),并将该类的实例设置为{{1窗口的。然后,您可以通过将属性名称指定为DataContext
,将ItemsSource
的{{1}}绑定到该类的成员。
答案 1 :(得分:0)
确认。 Visual Studio 2010 RTM上的崩溃相同。我也试过使用Window1。事实上,设计师有时会毫无问题地展示装订。
似乎必须有一种使用Window1的方法。