Вы могли использовать более универсальный преобразователь
public class EnumBooleanConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string parameterString = parameter as string;
if (parameterString == null)
return DependencyProperty.UnsetValue;
if (Enum.IsDefined(value.GetType(), value) == false)
return DependencyProperty.UnsetValue;
object parameterValue = Enum.Parse(value.GetType(), parameterString);
return parameterValue.Equals(value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string parameterString = parameter as string;
if (parameterString == null)
return DependencyProperty.UnsetValue;
return Enum.Parse(targetType, parameterString);
}
#endregion
}
, И в XAML-части Вы используете:
<Grid>
<Grid.Resources>
<l:EnumBooleanConverter x:Key="enumBooleanConverter" />
</Grid.Resources>
<StackPanel >
<RadioButton IsChecked="{Binding Path=VeryLovelyEnum, Converter={StaticResource enumBooleanConverter}, ConverterParameter=FirstSelection}">first selection</RadioButton>
<RadioButton IsChecked="{Binding Path=VeryLovelyEnum, Converter={StaticResource enumBooleanConverter}, ConverterParameter=TheOtherSelection}">the other selection</RadioButton>
<RadioButton IsChecked="{Binding Path=VeryLovelyEnum, Converter={StaticResource enumBooleanConverter}, ConverterParameter=YetAnotherOne}">yet another one</RadioButton>
</StackPanel>
</Grid>
Устанавливать переменные по запросу в промежуточном программном обеспечении вполне допустимо - я делаю это все время.
Для этого невозможно использовать process_response
, поскольку к тому времени шаблон уже отрисован - на этом этапе все, что вы получаете, это HttpResponse
, содержащий кучу HTML.
Альтернативой может быть обернуть render_to_response
вашей собственной функцией, которая принимает контекст вместе с запросом и шаблоном и при необходимости изменяет его перед передачей фактической функции рендеринга. Это дает преимущество в изменении фактического контекста, но недостаток в том, что вы должны помнить о вызове его в каждом представлении вместо функции по умолчанию.