2009-05-29 21 views
0

非常に具体的な質問を申し訳ありませんが、VS2008とVS2010がこのコードでクラッシュする理由は何ですか? ObjectDataProviderを使用してプロパティをバインドするのは一般的ですが、私はWeb上の多くの場所で例を見ましたが、私はそれを使用しようとしましたが、私は例外があり、私のVSは閉じます。XAMLでObjectDataProviderを使用してプロパティのクラッシュをバインドするVS

私のコードで何が問題になっていますか? VSのバグを登録する必要がありますか?あなたがWindow1のXAML内からWindow1のインスタンスを作成しようとしているように見えるあなたのコードサンプルから

<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

例外はありますか? VSがクラッシュする直前に何が起こるのですか? –

答えて

0

。その結果、無限ループが発生すると、アプリやVisual Studioがクラッシュすることがわかりました。

コレクションのメンバーをTreeViewにバインドする場合は、リストを含む別のクラスを作成し、そのクラスのインスタンスをウィンドウのDataContextとして設定することをお勧めします。プロパティ名をPathと指定して、TreeViewItemsSourceをそのクラスのメンバにバインドできます。

+0

ありがとう、私は新しいオブジェクトが作成されたことを認識していません。 –

0

確認中です。 Visual Studio 2010 RTMで同じクラッシュが発生しました。私もWindow1を使ってみました。結局のところ、デザイナーは問題なくバインディングを表示することがあります。

Window1を使用する方法があるようです。

関連する問題