Wpf 在XAML中使用ObjectDataProvider绑定属性崩溃
很抱歉提出一个非常具体的问题,为什么VS2008和VS2010会使用此代码崩溃?我认为使用ObjectDataProvider绑定属性是很常见的。我在网上的很多地方都看到过这样的例子,但当我尝试使用它时,我发现异常,我的VS关闭了 那么,我的代码有什么问题?我应该为VS注册一个bug吗Wpf 在XAML中使用ObjectDataProvider绑定属性崩溃,wpf,visual-studio-2008,xaml,Wpf,Visual Studio 2008,Xaml,很抱歉提出一个非常具体的问题,为什么VS2008和VS2010会使用此代码崩溃?我认为使用ObjectDataProvider绑定属性是很常见的。我在网上的很多地方都看到过这样的例子,但当我尝试使用它时,我发现异常,我的VS关闭了 那么,我的代码有什么问题?我应该为VS注册一个bug吗 <Window x:Class="ShortcutsManagementAddin.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/x
<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();
}
}
}
命名空间ShortcutsManagementAddin
{
公共类快捷方式
{
公共字符串类别名称;
}
///
///Window1.xaml的交互逻辑
///
公共部分类Window1:Window
{
私有列表类别=新列表();
公开名单类别
{
获取{返回类别;}
}
公共窗口1()
{
添加(新的快捷方式{CategoryName=“Category 1”});
添加(新的快捷方式{CategoryName=“Category 2”});
添加(新的快捷方式{CategoryName=“Category 3”});
添加(新的快捷方式{CategoryName=“Category 4”});
添加(新的快捷方式{CategoryName=“Category 5”});
初始化组件();
}
}
}
从您的代码示例来看,您似乎正在尝试从Window1
的XAML中创建Window1
的实例。考虑到这将导致无限循环,我可以看到应用程序或VisualStudio崩溃
如果要将集合的成员绑定到
TreeView
,最好创建一个单独的类(包含列表),并将该类的实例设置为窗口的DataContext
。然后,通过将属性名称指定为路径,可以将树视图的项资源
绑定到该类的成员。VisualStudio2010RTM上的相同崩溃。我还尝试使用Window1。问题是,有时候设计师会毫无问题地显示绑定
似乎一定有办法使用Window1。您有什么例外?在VS崩溃之前会发生什么?谢谢,我还没有意识到有新的对象被创建了。