我有一个简单的转换器继承自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
始终是之前 ViewModel
加载的 2 个值。
如何确保使用当前实例ViewModel
?