<context:property-placeholder location="classpath*:spring/*.properties" />
Если вы поместите его где-нибудь в classpath в каталог с именем spring (соответственно измените имена / каталоги), вы можете получить доступ с помощью выше
<property name="locations" value ="config/springcontext.properties" />
, это будет указывать на web-inf / классы / Config / springcontext.properties
Привязка перечислений - действительно неприятная операция, даже в WPF. Но, похоже, есть изящное решение, которое доступно в рамках Caliburn
.
Решение, однако, доступно не в коде фреймворка, а в его LOB Samples
. Найдите классы BindableEnum
и BindableEnumCollection
в проекте Caliburn.Silverlight.ApplicationFramework
.
HTH.
Я сам не пробовал, но вы можете успешно использовать ValueConverter из чего-то вроде строки в ваше перечисление. Такое впечатление у меня сложилось, когда я искал перечисления в Silverlight xaml.
Во-первых, я не уверен, можно ли передать Enum прямо из XAML в Silverlight. В любом случае в Prism есть небольшая проблема. Посмотрите, что команда устанавливается перед CommandParameter, что происходит, когда команда устанавливается внутри Prism вызывает UpdateEnabledState (), который внутренне вызывает CanExecute (параметр объекта) в вашем DelegateCommand, передавая ему CommandParameter (который, как мы помним, еще не был установлен)
вот базовый код из DelegateCommand.cs в Prism
bool ICommand.CanExecute(object parameter)
{
return CanExecute((T)parameter);
}
, поскольку параметр в этот момент имеет значение «null», приведение выдает исключение. Вот как я обошел эту проблему.
Your Enum.
namespace CodeExpert.Book.Helpers
{
public enum BookDirection { Previous = -1, NotSet = 0, Next = 1, }
}
вот мое объявление делегата, обратите внимание на использование объекта ... а не самого Enum. Я также выставляю свойства из ViewModel, которые будут отображать 2 разных направления.
public DelegateCommand<object> PreviousNextCommand { get; set; }
public BookDirection Previous { get { return BookDirection.Previous; }}
public BookDirection Next { get { return BookDirection.Next; }}
теперь в вашем OnPreviousNextCommandExecute убедитесь, что вы получили объект и вернули его к правильному перечислению
private void OnPreviousNextCommandExecute(object parameter)
{
BookDirection direction = (BookDirection)parameter;
//Code to process based on BookDirection
}
, а в XAML привяжите напрямую к открытым свойствам BookDirection.
<Button Content="Next" Commands:Click.Command="{Binding PreviousNextCommand}" Commands:Click.CommandParameter="{Binding Next}" />
<Button Content="Previous" Commands:Click.Command="{Binding PreviousNextCommand}" Commands:Click.CommandParameter="{Binding Previous}" />
Я не уверен в вашей ситуации привязки, как в моем случае Я установил свой DataContext непосредственно в ViewModel. Но это должно сработать для вас.
Извините за мой плохой английский и красноречие, надеюсь, это приведет вас на правильный путь.