У меня есть простой преобразователь, унаследованный от IMultiValueConverter
, который принимает 2 параметра (в массиве values
).
public class TicketNoConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var dataContext = values[0] as ViewModel;
var data = values[1] as String;
}
}
Я знаю, что мой преобразователь является одиночным, но несмотря на то, что ViewModel
содержит различныеданные мой конвертер всегда получал один и тот же ViewModel
экземпляр (первый параметр привязки) и один и тот же Remarks
текст.
При использовании этого XAML Remarks
правильно отображается с правильным значением.
<TextBlock
Grid.Column="1"
Style="{StaticResource EditorValueStyle}"
Text="{Binding ViewModel.Remarks}" />
Однако, если я передам Remarks
в качестве параметра привязки, он будет использовать те же значения параметров, что и первый ViewModel
, переданный из первого загруженного элемента.Вот как выглядит XAML:
<ContentControl Grid.Column="1">
<ContentControl.Content>
<MultiBinding Converter="{StaticResource TicketNo}">
<Binding Path="" />
<Binding Path="ViewModel.Remarks" />
</MultiBinding>
</ContentControl.Content>
</ContentControl>
Вот XAML, который я использую для регистрации моего конвертера:
<local:TicketNoConverter x:Key="TicketNo" />
Копаем в эту проблему еще 2 параметра, переданных в MultiBinding
- это всегда 2 значения из предыдущего ViewModel
, который был загружен.
Как я могу обеспечить использование текущего экземпляра ViewModel
?