2016-01-24 3 views
0

Это вопрос WPF. У меня есть два проекта в моем решении, например ProjectA и ProjectB, при этом ProjectB ссылается на ProjectA. В классе ProjectA App.cs я объявил свойство PropA (общедоступное и статическое). Моя проблема заключается в следующем: как я могу привязываться к PropA из XAML в ProjectB?Привязать к свойству приложения в другом проекте

Очевидно

{Binding PropA,Source={x:Static Application.Current}} 

не будет работать, и я не могу обернуть мою голову вокруг проблемы. Любая помощь будет принята с благодарностью!

Update

Чтобы прояснить путаницу, вот некоторые детали. ProjectA содержит класс ViewModel, который должен обновить коллекцию уровня приложения. Моя проблема была привязана к коллекции в XAML из окна в ProjectB. Я, наконец, решил это, переместив коллекцию в класс ProjectB App и выпустив событие из ViewModel в ProjectA. Затем, в конце кода окна (где я устанавливаю экземпляр ViewModel в качестве контекста данных), я просто подписываюсь на событие и действую соответствующим образом. Пуристы MVVM могут теперь стать зелеными, но немного кода никогда не повредит!

+1

Итак, вы ссылки Projecta, но вы создаете экземпляр Projecta. Приложение? Для привязки требуется исходный объект. –

+0

Да, экземпляр создается просто отлично. –

+0

Если вы создали экземпляр, вам просто нужно указать этот экземпляр в вашей привязке. См. Мой ответ. –

ответ

0

вы не можете. вам понадобится ссылка vise versa, и эта круговая ссылка недействительна для C#.

Вы можете извлечь это в третий проект и использовать его два других.

+0

Я так и думал! :(Думаю, мне придется использовать другой проект - или подумать о том, как обойти проблему. –

+0

ProjectA здесь не требует ссылки на ProjectB. –

0

Вам как-то нужна ссылка на экземпляр ProjectA.App. Например, вы можете иметь общественную собственность на вашем ProjectB.App:

namespace ProjectB 
{ 
    public partial class App : Application 
    { 
     ... 

     // this public property exposes an instance of ProjectA.App 
     public ProjectA.App TheOtherApp ... 

     ... 
    } 
} 

Тогда вы должны привязать к ней, как:

{Binding TheOtherApp.PropA, Source={x:Static Application.Current}} 
+0

Кажется хорошим! Я дам ему попробовать! Спасибо за отзыв! –

+0

@GeysserSdz oops, мой пример привязки был неправильным, просто исправлено. –

Смежные вопросы