Re: WPF: объекты в шаблоне
От: vit_as Россия  
Дата: 14.05.12 07:00
Оценка: 3 (1)
Здравствуйте, j0ey, Вы писали:

J>Понадобилось "вживить" в стандартный ScrollViewer несколько контролов, благодаря которым пользователь мог бы менять коэффициенты масштабирования по горизонтали и вертикали.


J>Первое что пришло в голову — это изменение свойства Template в стиле для ScrollViewer:


J>
J><Style x:Key="CustomScrollViewer" TargetType="{x:Type ScrollViewer}">
J>            <Setter Property="OverridesDefaultStyle" Value="True"/>
J>            <Setter Property="Template">
J>                <Setter.Value>
J>                    <ControlTemplate TargetType="{x:Type ScrollViewer}">
J>                        <!-- добавляем элементы из которых состоит ScrollViewer-->
J>                        <Grid>
J>                         ...
J>                            <ScrollBar x:Name="PART_VerticalScrollBar" ... >
J>                            <!--добавляем кнопки "+" "-", а так же Slider, для изменения масштаба по вертикали-->
J>                            <StackPanel VerticalAlignment="Bottom" Width="17" Height="131" Grid.Row="0" Grid.Column="1" Orientation="Vertical">
J>                               <Button x:Name="vert_plus_btn" Content="+" Height="18" Width="17" Padding="0,-2,0,0"/>
J>                               <Slider x:Name="vert_slider" Style="{StaticResource sl}" Orientation="Vertical" Height="95" .../>
J>                               <Button x:Name="vert_minus_btn" Content="-" Height="18" Width="17" Padding="0,-2,0,0"/>
J>                            </StackPanel>
J>                         ...
J>


J>В результате при нажатии на кнопки vert_plus_btn("+"), vert_minus_btn("-") или при перемещении slider'а vert_slider — масштаб должен изменяться.

J>Вопрос: как можно получить ссылку на объект vert_slider в cs файле реализации(С#), чтобы изменять его свойство vert_slider.Value при каждом новом нажатии на "+" или "-"? Или же подход иной?)

J>Спасибо.0,-2,0,0


Можно поискать по шаблону с помощью функции FindName после вызова ApplyTemplate

...
myScollViewer.ApplyTemplate();
Button btn = myScollViewer.Template.FindName("vert_plus_btn", myScollViewer) as Button;
...


Но вообще лучше так не делать, а унаследоваться от ScrollViewer и создать команды для нужных кнопок
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.