Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2012, 16:34   #1
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
Вопрос Присвоение значения.

Всем привет. Есть вот такой XAML-файл:
Код:
<Border x:Name="Border"
           ...
           ...
           Width="300">
    <Path>
        <Path.Data>
            <PathGeometry>
                <PathGeometry.Figures>
                    <PathFigure StartPoint="0,0" IsClosed="True">
                        <LineSegment>
                            <LineSegment.Point>
                                <Point X="???"/> //Как Иксу присвоить значение Border.Width???
                            </LineSegment.Point>
                         </LineSegment>
                     </PathFigure>
                 </PathGeometry.Figures>
             </PathGeometry>
        </Path.Data>
    </Path>
</Border>
Как Иксу присвоить значение Border.Width???
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 02.10.2012, 18:19   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Код:
....
<Point X="{Binding ElementName=Border, Path=Width, Mode=OneWay}"/>
....
Если размер бордюра может меняться (растягиваться например), то можно биндиться на ActualWidth
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 02.10.2012 в 18:22.
Luuzuk вне форума Ответить с цитированием
Старый 02.10.2012, 18:42   #3
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Luuzuk, привет, что-то не работает методика.
Цитата:
A 'Binding' cannot be set on the 'X' property of type 'Point'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.
Я понимаю, что речь идет о свойстве зависимости. Но ведь это свойство писал не я, а майкрософт. Чтож делать теперь?
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 02.10.2012 в 18:47.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 03.10.2012, 11:44   #4
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Вопрос биндингом решил:
Код:
using System.Windows.Data;
using System.Windows;
using System;

namespace WoD
{
    public class PointXConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            double xValue = (double)value;
            double yValue = System.Convert.ToDouble(parameter);
            return new Point(xValue, yValue);
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
Код:
<LineSegment.Point>
    <Binding ElementName="Border"
                Path="ActualWidth"
                Converter="{StaticResource PointXConverter}"
                ConverterParameter="0"/>
</LineSegment.Point>
Но появилась другая проблема: Если Border.Width задавать вручную - все биндится нормально, а если Border.Width имеет значение Auto, то биндится значение NaN (not a number). Что делать с этой бедой?
P.S. Проблема решена с помощью свойства ActualWidth - когда ширина еще не вычислина!
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 03.10.2012 в 11:53.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 03.10.2012, 11:48   #5
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
...
Если размер бордюра может меняться (растягиваться например), то можно биндиться на ActualWidth
ActualWidth именно для таких случаев
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присвоение указателю на массив значения Jugger Помощь студентам 1 18.01.2011 17:36
Присвоение значения полю IraPr Microsoft Office Access 5 29.12.2010 06:45
DateTimePicker - присвоение значения Dux Компоненты Delphi 2 14.09.2010 18:06
Присвоение значения строки Sam Gold PHP 0 11.05.2010 13:29
присвоение значения Stjernen Microsoft Office Excel 5 04.01.2010 14:44