gpt4 book ai didi

c# - MultiBinding 转换返回函数

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:04 24 4
gpt4 key购买 nike

我正在尝试转换一些单位。Convertback 函数应如何处理以下内容。获得以下 XAML。标签设置为我的 ViewModel 中的唯一对象。

<TextBox Grid.Row="2" Grid.Column="0" Margin="5" HorizontalAlignment="Right" Tag ="{Binding MyObject1}" Style ="{StaticResource TextBoxStyle}"/>
<TextBox Grid.Row="2" Grid.Column="1" Margin="5" HorizontalAlignment="Right" Tag ="{Binding MyObject2}" Style ="{StaticResource TextBoxStyle}"/>

这种风格...

        <Style x:Key="TextBoxStyle" TargetType="{x:Type TextBox}">
<Setter Property="Text">
<Setter.Value>
<MultiBinding Converter="{StaticResource EditUnitsConverterEx}">
<Binding RelativeSource="{RelativeSource Self}" Path="Tag"/>
<Binding Path="IsMetric"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>

有了这个转换器...

class EditUnitsConverter : IMultiValueConverter
{
MyObject item; //
bool IsMetric; // bool telling me what units the system is in

public object Convert(object[] values,
Type targetType,
object parameter,
System.Globalization.CultureInfo culture)
{
string sResult = "";

if (values[0] != null && values[1] != null)
{
item = values[0] as MyObject;
IsMetric = (bool)values[1];

sResult = item.Value;

switch (item.Type)
{
case UnitsType.Distance:
case UnitsType.Speed:
if (IsMetric && !item.UnitsAreMetric)
{
double dValue;
double.TryParse(item.Value, out dValue);
dValue = dValue * 25.4;
sResult = dValue.ToString();
}
else if (!IsMetric && item.UnitsAreMetric)
{
double dValue;
double.TryParse(item.Value, out dValue);
dValue = dValue / 25.4;
sResult = dValue.ToString();
}
break;

case UnitsType.Weight:
break;


case UnitsType.Force:
break;

default:
sResult = item.Value;
break;
}
}

return sResult;

}

public object[] ConvertBack(object value,
Type[] targetTypes,
object parameter,
System.Globalization.CultureInfo culture)
{
// throw new NotImplementedException();

// Need to know here what Object/Tag item I am dealing with ?????

}

}

任何带有示例代码的想法。感谢您的帮助!

最佳答案

您的 ConvertBack 方法需要将字符串转换为数组,其中第一项是 MyObject,第二项是 bool .

有时一个无法进行双向转换,因此不会实现ConvertBack 方法,这意味着您只有单向绑定(bind)。

如果您可以转换它,那么您应该实现它。我真的看不出你的 Convert 输出怎么可能。

我怎么知道这个转换后的字符串现在是公制还是非公制?

有关示例实现,请查看 here

关于c# - MultiBinding 转换返回函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21462840/

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