Bir dönüştürücü ile MultiBinding kullanabilirsiniz.
<MultiBinding Converter="{StaticResource formatter}">
<Binding Path="Price" />
<Binding Path="PriceFormat" />
</MultiBinding>
bu konuda güzel bir parçası:
public class FormatConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
// some error checking for values.Length etc
return String.Format(values[1].ToString(), values[0]);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Şimdi ViewModel mülkiyet ve aynı şey biçimini hem de bağlama: Birinci, ikinci belirtilen biçimi kullanarak ilk değeri biçimlendirir bir IMultiValueConverter tanımlamak Fiyatın nasıl biçimlendirileceğine dair mantık, ViewModel'de yaşayabilir ve test edilebilir. Aksi takdirde bu mantığı dönüştürücüye taşıyabilir ve ihtiyaç duyduğu başka herhangi bir özellikten geçirebilirsiniz.
Bu, daha önce hiç kullanılmamış, çok kullanılan ve daha önce hiç kullanılmamış olan, çok karmaşık bir formatlama için dönüştürücü parametresinden çok daha iyi bir çözüm gibi görünüyor. –
Ve elbette, ViewModel'de bir "FormattedPrice" özelliğini uygulamaktan ve buna bağlanmaktan dolayı @Boris'i durduran hiçbir şey yok. Esnek olmasa bile bu daha kolay olurdu. –
teşekkürler! İşe yarıyor! "FormattedPrice" e sahip olmak daha kolay ancak daha az zarif olurdu. Datagrid'imde en az 10 farklı fiyatım var. Bu aşamadaki tek endişem IMultiValueConverter'in performans sonuçlarıdır. –