Ответы - CodeHelperСписок последних 15 ответов на вопрос с сайта CodeHelperuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=22812012-09-26T03:13:45Zuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=2282Как определить ширину визуального элемента в WPF?2009-12-10T09:14:55-06:002009-12-10T09:14:55-06:00AlexanderТолько ленивому неизвестно, что в WPF настоятельно не рекомендуется жестко прописывать ширину и высоту у визуальных элементов. В связи с чем упомянутые ширина и высота определяются динамически вuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=2283Ответ от Alexander на вопрос с сайта CodeHelper2009-12-10T09:24:44-06:002009-12-10T09:24:44-06:00AlexanderВ общем, NaN - это значение по-умолчанию для Width и в данном случае может интерпретироваться как "не установлено". Width - это "желаемая" ширина FrameworkElement'а, в то время как ActualWidth - ширина элемента, определяемая при отрисовке этого элемента (т.о. доступна только для чтения).uuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=2284Ответ от safonovea на вопрос с сайта CodeHelper2009-12-10T15:38:03-06:002009-12-10T15:38:03-06:00safonoveaНебольшой кусочек кода может пролить свет на эту темную историю :) Один из возможных вариантов — попытка получить значение ActualWidth в конструкторе, когда ширина еще не вычислена.uuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=2285Ответ от safonovea на вопрос с сайта CodeHelper2009-12-11T02:06:27-06:002009-12-11T02:06:27-06:00safonoveaНе умещается в комментарий, поэтому ответом сделаю :) Насколько я понимаю, значение свойства FrameworkElement.ActualWidth вычисляется непосредственно после прохождения отрисовки. Если попытаться получить значение в конструкторе (т.е. на этапе создания, еще до отрисовки элемента), то это значениеuuid:a8a58a1d-2ce9-4a23-9c96-18031996e384;id=2286Ответ от Alexander на вопрос с сайта CodeHelper2009-12-11T02:11:09-06:002009-12-11T02:11:09-06:00AlexanderНе, я не в конструкторе пробовал. FrameworkElement source = (FrameworkElement) message.Source.UIElement; Popup popup = source.FindName<Popup>("popupErrors", true); ItemsControl list = popup.FindName<ItemsControl>("errorsList", true); list.ItemsSource =