我需要将两个值(可能情况下命名为单位和数量)作为转换器参数传递给绑定转换器(请注意,我不需要将这些值作为绑定值多重绑定),我需要将它们作为绑定转换器参数传递,因为我需要转换器的Convert
和ConvertBack
方法)。 我认为这样做的唯一方法是创建一个新类UnitQuantityBindClass将它们设置在该类中,并将此类作为转换器参数传递,但此类不会获得绑定值,当我通过转换器时,转换器参数是创建的类,不具有值。 能帮我一个吗?传递多个绑定值作为绑定转换器参数
public class UnitQuantityBindClass:DependencyObject
{
public static readonly DependencyProperty QuantityProperty = DependencyProperty.Register(
"Quantity", typeof(EQuantities), typeof(UnitQuantityBindClass));
public EQuantities Quantity
{
get { return (EQuantities)GetValue(QuantityProperty); }
set { SetValue(QuantityProperty, value); }
}
public static readonly DependencyProperty UnitProperty = DependencyProperty.Register(
"Unit", typeof(Enum), typeof(UnitQuantityBindClass));
public Enum Unit
{
get { return (Enum)GetValue(UnitProperty); }
set { SetValue(UnitProperty, value); }
}
}
用法:
<textboxunitconvertor:TextBoxUnitConvertor Name="gasDensityValueControl" InstantaneousConvert="True" Margin="96,163,0,0" IsEnabled="{Binding ElementName=chkGas,Path=IsChecked}" QuantityBind="{Binding _FluidBlackOilClass.SGGas_SC.Quantity , RelativeSource={RelativeSource AncestorType=Window}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Width="206" Height="28" HorizontalAlignment="Left" VerticalAlignment="Top">
<textboxunitconvertor:TextBoxUnitConvertor.TextBoxText>
<Binding Path="_FluidBlackOilClass.SGGas_SC.Value" RelativeSource="{RelativeSource AncestorType=Window}" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay" Converter="{StaticResource ValueStorageForUnitConverter}">
<Binding.ConverterParameter>
<classes:UnitQuantityBindClass
Quantity="{Binding ElementName=gasDensityValueControl,
Converter={StaticResource DummyConverter},
Path=_Quantity,
UpdateSourceTrigger=PropertyChanged,
Mode=TwoWay,
PresentationTraceSources.TraceLevel=High}"
Unit="{Binding ElementName=gasDensityValueControl,
Path=_CurrentUnitEnum,
UpdateSourceTrigger=PropertyChanged,
Mode=TwoWay}" />
</Binding.ConverterParameter>
</Binding>
</textboxunitconvertor:TextBoxUnitConvertor.TextBoxText>
</textboxunitconvertor:TextBoxUnitConvertor>
注:我的要求是获得“_FluidBlackOilClass.SGGas_SC.Value”,并把它传递到转换器,也是我需要通过“_Quantity”和“_CurrentUnitEnum”为转换器参数根据“_Quantity”和“_CurrentUnitEnum”将“_FluidBlackOilClass.SGGas_SC.Value”转换为新值并将其设置为TextBoxText。还需要根据“_Quantity”和“_CurrentUnitEnum”将TextBoxText转换回“_FluidBlackOilClass.SGGas_SC.Value”中。
在输出窗口任何约束力的错误? – WPFUser
为什么将数量和单位绑定声明为TwoWay?这似乎没有道理。你确定'_Quantity'和'_CurrentUnitEnum'是TextBoxUnitConvertor类的公共属性吗?下划线看起来很奇怪。 – Clemens
除此之外,真的很难理解这一切应该做什么。你可能会试着解释你实际想要达到的目标。也许我们可以提供更简单的解决方案。 – Clemens