multivalueconverter的参数总是相同的
本文关键字:参数 multivalueconverter | 更新日期: 2023-09-27 18:06:33
我有一个从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" />
更深入地研究这个问题,传递给MultiBinding
的两个参数总是来自先前加载的 ViewModel
的两个值。
我如何确保ViewModel
的当前实例被使用?
一旦你设置绑定,我不相信他们刷新,除非你的数据上下文改变。视图的数据上下文是设置为视图模型还是设置为其本身?如果没有设置为视图模型,则必须强制刷新绑定。
当视图模型被更改时,是否有一个INotify事件被触发?