值转换器-访问ConvertBack()方法中的Convert()变量
本文关键字:Convert 变量 方法 转换器 访问 ConvertBack | 更新日期: 2023-09-27 17:59:30
我有一个转换器,它有两个输入变量(一个对象和一个TextBox),然后返回TextBox.Text
String属性。
我遇到的问题是在我的转换器的ConvertBack()
方法中。我没有办法将任何更新链接回对象,因为我得到的只是一个字符串(文本框的文本)。是否有某种方法可以访问某些(如果不是全部)Convert()
变量?或者至少知道哪个文本框在调用ConvertBack()
?
这是我的物品控制代码:
<ItemsControl x:Name="ItemsControlGrid" ItemsSource="{Binding Path=ProjectOrganLocation.LesionTypes, Source={StaticResource Locator}}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Width="75" TextAlignment="Center" >
<TextBox.Text>
<MultiBinding Converter="{StaticResource LesionTypeConverter}" >
<Binding RelativeSource="{RelativeSource AncestorType={x:Type TreeViewItem}}" Path="DataContext.OrganLocation"/>
<Binding RelativeSource="{RelativeSource Self}" Path="." />
</MultiBinding>
</TextBox.Text>
</TextBox>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
下面是我的转换器中的一个片段:
List<CategoryCode> Lesions = organ.getLesionTypes;
if (organ.OrganDisplayName == organ.CurrentOrgan)
organ.Count++;
else
{
organ.Count = 0;
organ.CurrentOrgan = organ.OrganDisplayName;
}
return organ.Labels[organ.Count].LabelPrefix;
您最好的选择是向转换器类添加一个私有属性,并在转换期间存储您的值,以便ConvertBack可以访问它们。不过,您需要为每个绑定使用一个单独的转换器实例。
你想完成什么?可能有比转换器更好的方法
如果您在代码背后分配绑定,您可以向转换器添加一个构造函数,该构造函数将发送的TextBox(或任何其他数据)作为参数并进行记录。