none
Silverlight支持这样的功能吗? RRS feed

  • 问题

  • Silverlight如何绑定表达式,能否让文本框txtZ的Text绑定为txtX+txtY,如下所示:

    <TextBox x:Name="txtX" Text="{Binding X}"></TextBox>

    <TextBox x:Name="txtY" Text="{Binding Y}"></TextBox>

    <TextBox x:Name="txtZ" Text="{Binding X+Y}"></TextBox>

    请问高手些,如何实现?急........

    2010年7月19日 1:10

答案

  • 可以使用Converter的方式实现您要的功能

    using System;
    using System.Windows.Data;

    namespace Tiscs.Portal.RiaClient.Converters
    {
        /// <summary>
        /// 整数加法值转换器。
        /// </summary>
        public class IntegerAdditionConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                int p = System.Convert.ToInt32(value);
                int a = System.Convert.ToInt32(parameter);
                return p + a;
            }

            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                int p = System.Convert.ToInt32(value);
                int a = System.Convert.ToInt32(parameter);
                return p - a;
            }
    }

    }

    调用的时候这样使用

    先定义静态资源:

    xmlns:Converters="clr-namespace:mynet.app.SilverLight.PhotoAlbumManager.Converter"

    <Converters:IntegerAdditionConverter x:Key="IntegerAdditionConverter"/>

    <TextBox x:Name="txtX" Text="{Binding X}"></TextBox>

    <TextBox x:Name="txtY" Text="{Binding Y}"></TextBox>

    <TextBox x:Name="txtZ" Text="{Binding X, ConverterParameter={Binding Y}, Converter={StaticResource IntegerAdditionConverter}}"></TextBox>

    大概是这样的,使用的时候有问题可以给我邮件。


    人活着就要有他自己的意义,否则他就和死了没什么两样!!
    • 已编辑 Tiscs 2010年7月21日 5:57 修改代码格式
    • 已建议为答案 Tiscs 2010年7月21日 5:58
    • 已标记为答案 Min-Hong Tang - MSFT 2010年7月26日 3:11
    2010年7月21日 5:56

全部回复

  • 你好,目前silverlight还不支持这种表达式绑定。
    BLOG:http://beniao.cnblogs.com MSN:beniao@live.cn
    2010年7月19日 1:35
  • 可以使用Converter的方式实现您要的功能

    using System;
    using System.Windows.Data;

    namespace Tiscs.Portal.RiaClient.Converters
    {
        /// <summary>
        /// 整数加法值转换器。
        /// </summary>
        public class IntegerAdditionConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                int p = System.Convert.ToInt32(value);
                int a = System.Convert.ToInt32(parameter);
                return p + a;
            }

            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                int p = System.Convert.ToInt32(value);
                int a = System.Convert.ToInt32(parameter);
                return p - a;
            }
    }

    }

    调用的时候这样使用

    先定义静态资源:

    xmlns:Converters="clr-namespace:mynet.app.SilverLight.PhotoAlbumManager.Converter"

    <Converters:IntegerAdditionConverter x:Key="IntegerAdditionConverter"/>

    <TextBox x:Name="txtX" Text="{Binding X}"></TextBox>

    <TextBox x:Name="txtY" Text="{Binding Y}"></TextBox>

    <TextBox x:Name="txtZ" Text="{Binding X, ConverterParameter={Binding Y}, Converter={StaticResource IntegerAdditionConverter}}"></TextBox>

    大概是这样的,使用的时候有问题可以给我邮件。


    人活着就要有他自己的意义,否则他就和死了没什么两样!!
    • 已编辑 Tiscs 2010年7月21日 5:57 修改代码格式
    • 已建议为答案 Tiscs 2010年7月21日 5:58
    • 已标记为答案 Min-Hong Tang - MSFT 2010年7月26日 3:11
    2010年7月21日 5:56