我不确定您如何认为 sa_ddam213 的答案很优雅,这很可怕。转换器,如建议的 RV1987,是正确的方法,但您可以更聪明。
创建一个转换器,它接受一个布尔值并将其转换为转换器定义中定义的选项。
public class BoolToObjectConverter : IValueConverter
{
public object TrueValue { get; set; }
public object FalseValue { get; set; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Convert.ToBoolean(value) ? TrueValue : FalseValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
定义转换器:
<local:BoolToObjectConverter x:Key="SendAsHtmlBoolToTextConverter"
TrueValue="HTML"
FalseValue="Plain Text"/>
并使用它:
<MultiBinding StringFormat="{}{0} - Message ({1})}">
<Binding ElementName="txtSubject" Path="Text" />
<Binding ElementName="biSendAsHtml" Path="IsChecked"
Converter="{StaticResource SendAsHtmlBoolToTextConverter}"/>
</MultiBinding>
如果您愿意,您甚至可以制作 TrueValue 和 FalseValue DependencyProperties 来支持绑定。