Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Binding на f(x)


Автор: mephistopheies 2.2.2009, 18:40
Кто нибудь знает как сделать привязку параметра не к другому параметру, а к функции от другого параметра?
например тут х2 и у2 равны ширине и высоте канваса
Код

<Canvas Name="cx">
    <Line X1="0" Y1="0" 
        X2="{Binding ElementName=cx, Path=Width}" 
        Y2="{Binding ElementName=cx, Path=Height}" Stroke="Black" Stretch="Fill"></Line>
</Canvas>


а вот как сделать что то типа такого (далее идет неправильный код, но передающий смысл того что нужно): X2="{Binding ElementName=cx, Path=Width / x}"?


Автор: mephistopheies 3.2.2009, 12:22
разобрался, если кому интересно то вот:

Код

[ValueConversion(typeof(double), typeof(double))]
    public class ScaleConverter : IValueConverter
    {

        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (double)value / System.Convert.ToDouble(parameter);
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (double)value * System.Convert.ToDouble(parameter);
        }

        #endregion
    }


Код

 <s:ScaleConverter x:Key="sc"></s:ScaleConverter>


Код

<Line X1="0" Y1="0"
                                  Stroke="Black"
                                  IsHitTestVisible="False"
                                  X2="{Binding ElementName=cx, Path=Width, ConverterParameter=2, Converter={StaticResource sc}}"
                                  Y2="{Binding ElementName=cx, Path=Height, ConverterParameter=2, Converter={StaticResource sc}}"></Line>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)