Использование ObjectDataProvider в XAML для связывания сбоев свойств VS - PullRequest
0 голосов
/ 29 мая 2009

Извините за очень конкретный вопрос, бот, почему 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();
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 05 мая 2010

Подтверждение. Тот же сбой здесь, на Visual Studio 2010 RTM. Я также пытался использовать Window1. Дело в том, что иногда дизайнер отображал привязку без проблем.

Похоже, должен быть способ использовать Window1.

0 голосов
/ 29 мая 2009

Из вашего примера кода похоже, что вы пытаетесь создать экземпляр Window1 из XAML Window1. Учитывая, что это приведет к бесконечному циклу, я мог видеть, что происходит сбой приложения или Visual Studio.

Если вы хотите привязать членов коллекции к TreeView, было бы лучше создать отдельный класс (который будет содержать список) и установить экземпляр этого класса как DataContext окно. Затем вы можете привязать ItemsSource TreeView к члену этого класса, указав имя свойства как Path.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...