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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2014, 21:39   #1
Nikulov
Новичок
Джуниор
 
Регистрация: 14.03.2014
Сообщений: 2
По умолчанию Задать высоту FrameWork Element

Здравствуйте, я только начал изучать разработку приложений для WinRT, изучил несколько учебников на MSDN и вот в своем проекте столкнулся с проблемой, которую пока не смог решить, надеюсь я правильно выбрал ветку форума, но я при разработке использую с++. Ведь я правильно понимаю, все что можно сделать в xaml конструкторе можно сделать и из кода?

С++ VS 2013 Windows 8.1 Создаю по событию из кода несколько RowDefinitions в Grid одна в 1* вторая в 1* третья в 0,5*. В row'ы добавляю по циклу объекты Image с заданным source и fill на весь row, при этом в третьем row(который в 0,5*) картинка сжимается а мне нужно именно половина картинки, то есть чтобы точно также как и в первых двух row только в половину обрезанный. Как из кода снять размер Height и задать его новому объекту Image? Или может как-то еще можно. Жестко в pixel не задаю из-за масштабирования под разные дисплеи. Код примерной такой:

for (int i(0); i != fragments; ++i){

if (i == fragments - 1){

auto finalrow = ref new Windows::UI::Xaml::Controls::RowDef inition();

finalrow->Height = Windows::UI::Xaml::GridLength(0,5, Windows::UI::Xaml::GridUnitType::St ar); TargetGrid->RowDefinitions->Append(finalrow);

else {TargetGrid->RowDefinitions->Append(ref new Windows::UI::Xaml::Controls::RowDef inition());}

auto images = ref new Windows::UI::Xaml::Controls::Image( );

images->Source = ref new BitmapImage(ref new Uri("ms-appx:///Assets/texture.png"));

images->Stretch = Windows::UI::Xaml::Media::Stretch:: Fill;

TargetGrid->Children->Append(images);

TargetGrid->SetRow(images, i);
Nikulov вне форума Ответить с цитированием
Старый 14.03.2014, 22:39   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

В Xaml я бы сделал как-то так.
Код:
<Image x:Name="_targetImage" Height="{Binding ElementName=_sourceImage, Path=ActualHeight}" />
_targetImage - это картинка из третьей строки. Её высота всегда будет браться из картинки _sourceImage.

В коде задать аналогичный биндинг, думаю, проблем не составит
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 14.03.2014, 23:13   #3
Nikulov
Новичок
Джуниор
 
Регистрация: 14.03.2014
Сообщений: 2
По умолчанию

Спасибо, попробую
Nikulov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать блок на всю высоту окна минус высоту шапки и футера Qaliti HTML и CSS 3 19.07.2012 13:20
Specified element is already the logical child of another element. Disconnect it first. sealmu WPF, UWP, WinRT, XAML 0 24.02.2011 17:36
Random element deleting HD295 Общие вопросы C/C++ 1 17.05.2009 04:29
p:element и q:^element - в чем разница? Arkuz Компоненты Delphi 1 21.04.2008 01:16