Примечание: ответ mm8 с использованием DataTrigger хорош, если вы разрабатываете приложение WPF.
В WPF и UWP вы можете создать собственную реализацию интерфейса IValueConverter, чтобы добиться этого практически с одним и тем же кодом. По сути, он преобразует ваш строковый ввод в логическое значение в зависимости от определенных вами правил.
WPF:
public class StringToBooleanConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.ToString().Equals("y");
}
// This is not really needed because you're using one way binding but it's here for completion
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if(value is bool)
{
return value ? "y" : "n";
}
}
}
UWP:
Приведенный выше код точно такой же, за исключением последнего параметра в методах Convert и ConvertBack:
public object Convert(object value, Type targetType, object parameter, string language) { }
public object ConvertBack(object value, Type targetType, object parameter, string language) { }
Следующее более или менее одинаково как для WPF, так и для UWP. Вы можете использовать конвертер в XAML для преобразования из строки в bool:
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding f_selected, Mode=OneWay, Converter={StaticResource StringToBooleanConverter}}" />
</Style>
</ListBox.ItemContainerStyle>
Также не забудьте представить конвертер в начале:
<Window.Resources>
<local:YesNoToBooleanConverter x:Key="StringToBooleanConverter" />
</Window.Resources>