2009-05-29 7 views
0

Désolé pour une question très spécifique, bot pourquoi VS2008 et VS2010 se bloquent avec ce code? Je pense que c'est commun d'utiliser ObjectDataProvider pour lier la propriété. J'ai vu des exemples dans de nombreux endroits sur le web, mais si j'essayais de l'utiliser, j'ai de l'exception et mon VS se ferme.Utilisation de ObjectDataProvider en XAML pour lier les plantages de la propriété VS

Alors, quel est le problème avec mon code? Devrais-je enregistrer un bug pour 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

Quelle est l'exception que vous obtenez? Et que se passe-t-il juste avant que VS ne se bloque? –

Répondre

0

À partir de votre exemple de code il semble que vous essayez de créer une instance de Window1 à partir du XAML de Window1. Étant donné que cela se traduirait par une boucle infinie, je pourrais voir ce plantage de l'application ou Visual Studio.

Si vous souhaitez lier les membres de la collection au TreeView, il est préférable de créer une classe distincte (qui contiendra la liste) et de définir une instance de cette classe comme DataContext de la fenêtre. Vous pouvez ensuite lier le ItemsSource du TreeView à un membre de cette classe en spécifiant le nom de la propriété en tant que Path.

+0

Merci, je n'ai pas réalisé qu'il y avait un nouvel objet créé. –

0

Confirmation. Même crash ici sur Visual Studio 2010 RTM. J'ai également essayé d'utiliser Window1. Chose est, parfois le concepteur a affiché la liaison sans aucun problème.

On dirait qu'il doit y avoir une façon d'utiliser Window1.

Questions connexes