gpt4 book ai didi

wpf - 在双向绑定(bind)中将 IValueConverter 与当前 DataContext 一起使用

转载 作者:行者123 更新时间:2023-12-04 15:15:37 25 4
gpt4 key购买 nike

我在使用转换器在字符串和我们的时间格式之间进行转换时遇到问题。转换器本身工作正常,并像这样实现:

    [ValueConversion(typeof(string), typeof(SimpleTime))]
public class StringToSimpleTimeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// convert from string to SimpleTime and return it
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// convert value from SimpleTime to string and return it
}
}

使用转换器的 XAML 将转换器本身包含在 usercontrol.resources 中,如下所示:
<converter:StringToSimpleTimeConverter x:Key="stringToSimpleTimeConverter"/>

如果遇到该属性(我在后台使用 wpf 工具包中的数据网格),则使用用于编辑 simpletime 的数据模板:
<DataTemplate x:Key="SimpleTimeEditingTemplate">
<TextBox Text="{Binding, Converter={StaticResource stringToSimpleTimeConverter}, Mode=TwoWay}"/>
</DataTemplate>

我遇到的问题是转换器需要在绑定(bind)中指定一个路径,如果它是双向转换器(并且我需要双向转换器),但我要设置的属性已经是当前的 DataContext - 什么路径那我可以指定吗?

我能想到的唯一解决方法是在 SimpleTime 中引入一个虚拟属性,它只获取当前的 SimpleTime 或设置它。
public class SimpleTime
{
...
public SimpleTime Clone
{
get { return new SimpleTime(_amount, _format); }
set { this._amount = value._amount; this._format = value._format; }
}
}

并通过绑定(bind)到那个
 <TextBox Text="{Binding Clone, Converter={StaticResource stringToSimpleTimeConverter}, Mode=TwoWay}"/>

这工作正常,但不是一个真正合适的解决方案,特别是如果我需要转换器更多次......

任何帮助表示赞赏
干杯,曼尼

最佳答案

我认为您可以像这样解决它

<TextBox Text="{Binding Path=DataContext,
RelativeSource={RelativeSource Self},
Converter={StaticResource stringToSimpleTimeConverter},
Mode=TwoWay}"/>

关于wpf - 在双向绑定(bind)中将 IValueConverter 与当前 DataContext 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4406996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com