【问题标题】:How Binding Converter to a control's property can access other properties of the control绑定转换器到控件的属性如何访问控件的其他属性
【发布时间】:2012-04-24 19:27:45
【问题描述】:

我正在尝试将值“MaxLines”绑定到 WP7 应用程序中的 TextBlock 的 Height 属性。绑定有一个转换器,它应该将 LineHeight 与 MaxLines 相乘并返回预期的高度。我想说的是我想控制 TextBlock 中显示的行数。如何从转换器访问 TextBlock 的 LineHeight 属性。

为了使这个通用,我不想单独维护 LineHeights 或从 viewModel 访问它们

【问题讨论】:

    标签: wpf silverlight windows-phone-7 binding ivalueconverter


    【解决方案1】:

    查看这篇文章,Silverlight data binding and value converters,他解释了如何在 Silverlight 中进行数据绑定。在示例中,他使用带参数值的 ValueConverter。

    我认为这就是您所需要的,只需将您的 LineHeight 绑定到参数即可。 (你可以使用 Blend)

    【讨论】:

    • 通过 ConverterParameter 传递对象引用或行高不起作用。应用程序正在崩溃。
    • 在 MS.Internal.XamlManagedRuntimeRPInvokes.TryApplyMarkupExtensionValue(对象目标,XamlPropertyToken propertyToken,对象值)出现 invalidOperationException
    • 删除 ConverterParameter 时没有错误。我认为.net 紧凑框架不允许 ConverterParameter。或者可能只允许使用常量。
    【解决方案2】:

    你可以使用ConverterParameter:

    <TextBlock x:Name="MyTextBlock" Height="{Binding ConverterParameter=Height, ElementName=MyTextBlock, Converter={StaticResource SomeConverter}}" Text="{Binding SomeLongText}" />
    

    或传递整个文本块:

    <TextBlock x:Name="MyTextBlock" Height="{Binding Converter={StaticResource ImageFileConverter}, ElementName=DropdownImage}" Text="{Binding SomeLongText}" />
    

    然后在控制器内部:

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                var image = value as TextBlock;
                /*do your magic here*/
    }
    

    【讨论】:

    • 通过 ConverterParameter 传递对象引用或行高不起作用。应用程序正在崩溃。
    • Height="{Binding LineOneHeight, Converter={StaticResource hConverter}, ConverterParameter={Binding ElementName=dTextblock}}" 这就是我的绑定方式。
    • 试试这个:Height="{Binding Converter={StaticResource hConverter}, ConverterParameter={Binding LineOneHeight,ElementName=dTextblock}}"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多