Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Storyboard в WPF, в SV понятно, а тут? 
V
    Опции темы
mrLIS
  Дата 24.9.2008, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.9.2008
Где: город герой Москв а )

Репутация: нет
Всего: нет



Всем привет.. вот запара небольшая... 
в Silverlight если есть сторибоард и имнем допустим sb1, то по нажатию кнопки мы ее запускаем исполняя sb1.Begin(). А вот сел за WPF и фиг там был.. sb1 вообще нельзя использовать в коде, как тогда быть?

Ну и еще вопрос не в тему немного... 
В Illustrator делам чертеж допустим материнской платы с основными ее элементами. Дальше чешем в Expression Disign и переводим всю красоту в XAML. В бленде вставляем все эту красоту. Далее, выделяем поочередно элементы нашей платы и делаем из них USerControlы. С права висит Tree в котором отображена структура нашей платы. Задача такая, подводим мышь к элементу на плате, он подсвечивается, щелкаем на него, он выделяется и в Tree выбирается этот элемент. Эту задачу решил так: для каждого элемента (уже созданного UserControl) сделал по 2 Storyboard, одна выделяет, другая подсвечивает, у и для каждого элемента сделал по два события наведения мыши и ее щелчек, после которых запускаются соответствующие сториборды. Со следующей задачей начал мучится, и мучаюсь уже дня три. Весь чертеж на экране не помещается (ну прокрутку сделал ет фигня), поэтому надо сделать подобие некоторого Zoom а. Если бы это была просто картинка то фигня вопрос. Но у нас это куча UerControl ов со своими событиями и т.д., которая находится в Greed. Так вот как можно увеличить/уменьшить это чудо?
Пробывал myGrid.Width = myGrid.Width+1  и тоже самое с шириной, но нефига интересного не увидел, все элементы просто сползаются или наоборот. 
Кто знает как решить эту задачу или предложит более оригинальное и интересное решение. smile 
Пасиб за ответы! 
PM MAIL ICQ   Вверх
rooks
Дата 29.9.2008, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 28.9.2008
Где: Минск

Репутация: 5
Всего: 9



наваял вот такой код в Kaxaml, думаю все будет понятно(это по поводу зума)...
а насчет первого вопроса - смотреть, скорей всего, надо здесь: Animation Overview (local: ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/wpf_conceptual/html/bd9ce563-725d-4385-87c9-d7ee38cf79ea.htm)

Код

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Page.Background>
        <RadialGradientBrush GradientOrigin="0.5,0" RadiusX="0.6" RadiusY="0.5">
            <GradientStop Color="#FF9ACD32" Offset="0"/>
            <GradientStop Color="#FF5F7F1F" Offset="1"/>
        </RadialGradientBrush>
    </Page.Background>
    <StackPanel Orientation="Vertical">
        <Border BorderBrush="Red" BorderThickness="1" ClipToBounds="True">
        <Grid Width="400" Height="400" RenderTransformOrigin="0.5,0.5">  
          <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>
           <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.RenderTransform>
                <ScaleTransform ScaleX="{Binding ElementName=slider1, Path=Value}" ScaleY="{Binding RelativeSource={RelativeSource Self}, Path=ScaleX}"/>
            </Grid.RenderTransform>
            <Button Grid.Row="0" Grid.Column="0" Margin="10">1</Button>
            <Button Grid.Row="0" Grid.Column="1" Margin="10">2</Button>
            <Button Grid.Row="1" Grid.Column="0" Margin="10">3</Button>
            <Button Grid.Row="1" Grid.Column="1" Margin="10">4</Button>
            </Grid>
            </Border>
        <Slider x:Name="slider1" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Margin="10" Maximum="2" Minimum="0.5" Value="1"/>
    </StackPanel>
</Page>


Это сообщение отредактировал(а) rooks - 29.9.2008, 00:20
PM MAIL ICQ   Вверх
mrLIS
Дата 29.9.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.9.2008
Где: город герой Москв а )

Репутация: нет
Всего: нет



rooks за ответ большое спасибо, а мог бы ты пояснить что значат   <ScaleTransform ScaleX="{Binding ElementName=slider1, Path=Value}" ScaleY="{Binding RelativeSource={RelativeSource Self}, Path=ScaleX}"/>, просто еще чайник совсем  и не освоился.. 
ЗЫ еще раз большое спасибо!
PM MAIL ICQ   Вверх
mrLIS
Дата 29.9.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.9.2008
Где: город герой Москв а )

Репутация: нет
Всего: нет



А ну со значениями ScaleX и У рзобрался, спабо, долго я парился над этим... 
вот только почемуто в Silverlight не получается ScaleX="{Binding ElementName=slider1, Path=Value}" ScaleY="{Binding RelativeSource={RelativeSource Self}
он как ошибку в замл выводит. а можно ли как нибудь сделать так чтобы в коде 
myGrid.ScaleX = slider1.Valie;
myGrid.ScaleY = myGridScaleX.Value;
?
PM MAIL ICQ   Вверх
rooks
Дата 29.9.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 28.9.2008
Где: Минск

Репутация: 5
Всего: 9



ScaleTransform - увеличивает/уменьшает любой UIElement. ScaleX и ScaleX задают во сколько раз растянуть/сжать
ScaleY="{Binding RelativeSource={RelativeSource Self}, Path=ScaleX} - здесь мы привязываем значение свойства ScaleY к значению свойства ScaleX, можно было бы написать так же как и в ScaleX, результат был бы тем же:
ScaleY="{Binding ElementName=slider1, Path=Value}

ScaleX="{Binding ElementName=slider1, Path=Value}
ну а здесь мы привязываем значение ScaleX к значению свойства Value слайдера...

ну а вообще, чтобы лучше во всем разобраться советую прочитать про Binding в хелпе:
Data Binding Overview
local: ms-help://MS.MSDNQTR.v90.en/wpf_conceptual/html/c707c95f-7811-401d-956e-2fffd019a211.htm

Добавлено @ 12:38
Цитата(mrLIS @ 29.9.2008,  12:27)
он как ошибку в замл выводит. а можно ли как нибудь сделать так чтобы в коде 
myGrid.ScaleX = slider1.Valie;
myGrid.ScaleY = myGridScaleX.Value;
?

обзываешь как-нить Transform:
<ScaleTransform x:Name="transform" ..

потом:
Код

            Binding b1 = new Binding();
            b1.Source = slider1;
            b1.Path = new PropertyPath("Value");
            transform.SetBinding(ScaleTransform.ScaleXProperty, b1);

            b1 = new Binding();
            b1.Source = slider1;
            b1.Path = new PropertyPath("Value");
            transform.SetBinding(ScaleTransform.ScaleYProperty, b1);


Это сообщение отредактировал(а) rooks - 29.9.2008, 12:39
PM MAIL ICQ   Вверх
mrLIS
Дата 29.9.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.9.2008
Где: город герой Москв а )

Репутация: нет
Всего: нет



пасиба за новые догадки.. только как я понял ет для WPF в Silverlight понятия Binding нет.  
А в чем тут может быть ошибка:
Код

<Grid x:Name="control_map" Height="700.000671386719" Width="2000.00341796875" RenderTransformOrigin="0.5,0.5">
                    <Grid.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform x:Name="myDouble" ScaleY="1" ScaleX="1"/>
                            <SkewTransform/>
                            <RotateTransform/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </Grid.RenderTransform>


Код

private void silder1_ValueChanged(object sender, RoutedEventArgs e)
        {
            
            myDouble = new ScaleTransform();
            myDouble.ScaleX = System.Convert.ToDouble(silder1.Value);
            myDouble.ScaleY = System.Convert.ToDouble(silder1.Value);
        }
 

При присваении значений появляется ошибка " Object reference not set to an instance of an object."


PM MAIL ICQ   Вверх
mrLIS
Дата 30.9.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 10.9.2008
Где: город герой Москв а )

Репутация: нет
Всего: нет



rooks спасибо тебе большое за помощь, вроде разобрался.. 
PM MAIL ICQ   Вверх
rooks
Дата 30.9.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 28.9.2008
Где: Минск

Репутация: 5
Всего: 9



Цитата

только как я понял ет для WPF в Silverlight понятия Binding нет.  

да, для WPF... я думал и в Silverlight сойдет) оказалось не все так просто... а ошибка вылазит из-за того, что silder1_ValueChanged вызывается когда еще slider1=null

я сделал так, вроде работает
Код

            if (slider1 != null)
            {
                myDouble.ScaleX = System.Convert.ToDouble(slider1.Value);
                myDouble.ScaleY = System.Convert.ToDouble(slider1.Value);
            }

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.