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およびFalseValueDependencyPropertiesを作成してバインディングをサポートすることもできます。