У меня есть ListBox
, где я отображаю все позиции позиций. Мне нужно показать цену. Я создал ValueConverter
, который принимает объект OrderPosition
и возвращает мою цену как двойную. формула: Сумма * Product.Price (Amount
и Product
являются свойства в OrderPosition
)Пропустить текущий элемент в ValueConverter
Мой XAML просто ничего не отображается:
<ListBox Grid.Row="1" Grid.Column="0" Margin="3" ItemsSource="{Binding SelectedOrder.OrderPositions}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}x {1}">
<Binding Path="Amount" />
<Binding Path="Product.Label" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<TextBlock Text="{Binding /, Converter={StaticResource PositionPriceConverter}, StringFormat={}{0:c}}" Grid.Column="1"
TextAlignment="Right" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Вот мой конвертер:
public class PositionPriceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var position = (OrderPosition)value;
return position.Amount * position.Product.Price;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Вы можете показать свой конвертер? – sexta13
Я добавил. Я предполагаю, что кастинг работает, потому что мое приложение не генерирует исключение. –
Я думаю, что @dkozl - лучший ответ :) – sexta13