Я работаю над проектом WPF после шаблона MVVM. У меня есть следующие модели:Использовать IValueConverter в WPF DataGrid в зависимости от нескольких значений одной и той же строки
Название ... |.Value.|.Unit.|.Type.|.Min.|.Max.|
Voltage| ..... 3 ..... | ... mV..| .... X .... | ... 0 ... | .... 5 .... |
Текущий ... ..1 ..... | ... мА..| .... Y .... | ... 2 ... | .... 7 .... |
Это что показано в таблице данных:
Название ... |.Value.|.Unit.|
Voltage| .... 3 ..... |.mV..|
Current| .... 1 ..... |.mA..|
шаблоны (XAML):
<DataTemplate x:Key="NumTemplate">
<wpfToolkit:IntegerUpDown Value="{Binding Value, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource StimVoltageConverter},ConverterParameter=XXX}" />
</DataTemplate>
<DataTemplate x:Key="ComboboxTemplate">
<ComboBox ItemsSource="{Binding Path=XXX}"
DisplayMemberPath="Name"
SelectedValuePath="Value"
SelectedValue="{Binding Value, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
DataGrid (XAML):
<DataGrid ItemsSource="{Binding FixParaCollectionView}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn IsReadOnly="True" Header="Name" Binding="{Binding Id}"/>
<DataGridTemplateColumn Header="Value">
<DataGridTemplateColumn.CellTemplateSelector>
<helper:TemplateSelector ComboboxTemplate="{StaticResource ComboboxTemplate}" NumTemplate="{StaticResource NumTemplate}"/>
</DataGridTemplateColumn.CellTemplateSelector>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Unit" Binding="{Binding Unit,NotifyOnTargetUpdated=True}">
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
StimVoltageConverter: IValueConverter:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int val = (int)value;
return (int)(val/0.41);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
int val = (int)value;
return (int)(val * 0.41);
}
Я хотел бы сделать 2 вещи теперь:
значения Преобразовать (например, Значение * 0,41, если Type == X), на основе другого значения той же строки, например «Имя» или «Тип»
Я хочу проверить значения, записанные в datagrid (пользователем) (например,/max от модели)
Я добавил конвертер в шаблон «NumTemplate».
Это хорошая идея сделать это с помощью конвертера/подтверждения? Я действительно хотел бы реализовать это в конвертере, потому что он прекрасно отделен от всей другой логики.
Заранее спасибо.
Как получить другие значения одной строки в ValueConverter? – user2799180