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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Один стиль для всех Label's внутри панели? как указать xaml-стиль один раз 
:(
    Опции темы
exBlender
Дата 2.10.2009, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Например, имеем ранее созданный стиль Label1 и панель, типа:

<StackPanel>
<Label Style="{DynamicResource Label1}" Content="a"/>
<Label Style="{DynamicResource Label1}" Content="b"/>
<!-- (+ еще десяток Label's с этим же стилем, в сумме - дюжина) -->
</StackPanel>

Есть какой-то довольно простой способ указать, что внутри панели все Label's будут иметь стиль {DynamicResource Label1}
 
<StackPanel>
   <StackPanel.Resources>
        ???(вот тут я забыл, как это указать)
  </StackPanel.Resources>
         
а затем пойдет

<Label Content="a"/>
<Label Content="b"/>
<!-- (+ еще десяток Label's , в сумме - дюжина) -->
</StackPanel>

и при добавлении Label в панель стиль указывать уже не нужно.

Может ли кто подсказать? Хелп, плз...
--------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт.
PM MAIL   Вверх
math64
Дата 2.10.2009, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Код

<Window ...>
  <Window.Resources>
    <Style TargetType="{x:Type Label}" x:Key="MyLabel">
       ...
    </Style>
  </Window.Resources>
  <StackPanel>
     <StackPanel.Resources>
       <Style TargetType="{x:Type Label}" BasedOn="{StaticResource MyLabel}"/>
    </StackPanel.Resources>
    <Label Content="a"/>
    <Label Content="b"/>
  </StackPanel>
</Window>


Это сообщение отредактировал(а) math64 - 2.10.2009, 08:11
PM   Вверх
exBlender
Дата 2.10.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо за ответ. 

А через DynamicResource без BasedOn сделать нельзя? 

Мне кажется, раньше я делал без создания StaticResources в этом же файле.
--------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт.
PM MAIL   Вверх
knox
Дата 3.10.2009, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="YourStyle.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
    
    <StackPanel Background="{DynamicResource background}">
         <Label Content="a"/>
         <Label Content="b"/>
    </StackPanel>


немного не дочитал если в этом же файле, без ресурсного словаря то можно так:

Код

<Style x:Key="{x:Type Label}" TargetType="{x:Type Label}">
</Style>


Это сообщение отредактировал(а) knox - 3.10.2009, 21:08
PM MAIL   Вверх
exBlender
Дата 4.10.2009, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо за ответы! 
У меня есть дополнительный вопрос. Я хочу назначить стиль всем Button's внутри Toolbar'a.
Если указываю стиль
Код
<Window.Resources>
    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource ButtonToolBar}" /> 
</Window.Resources>

внутри ReachTextBox'a стиль работает, внутри самой панели тулбара не работает.
Если я указываю BasedOn стиль внутри тулбара:
Код
<ToolBar>
    <ToolBar.Resources>
        <Style TargetType="{x:Type Button}" BasedOn="{StaticResource ButtonToolBar}" />
    </ToolBar.Resources>
...

- это тоже не работает. Что здесь не так или чего не хватает? Tnx.

Это сообщение отредактировал(а) exBlender - 4.10.2009, 20:10
--------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт.
PM MAIL   Вверх
math64
Дата 4.10.2009, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Тулбар по уполчанию определяет свои стили для кнопок, чекбоксов и радиобуттонов.
Они более приоритетны, чем стили определённые в окне, поэтому первый способ не работает.
Почему не работает второй способ, непонятно. Исходники стилей всех элементов можно найти в msdn.
PM   Вверх
exBlender
Дата 4.10.2009, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(math64 @  4.10.2009,  22:41 Найти цитируемый пост)
Почему не работает второй способ, непонятно.

Я забыл, что внутри Toolbar Template находится ToolBarPanel (x:Name="ToolBarPanel" IsItemsHost="true"). Все кнопки размещаются там.
Видимо, в <ToolBar.Resources> нужно указать путь к этой панели. Как это сделать? Tnx.

--------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт.
PM MAIL   Вверх
math64
Дата 5.10.2009, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Можно внутри Toolbar разместить StackPanel, в которой разместить кнопки и задать их стили. Визульно наличие StackPanel будет незаметно.
PM   Вверх
exBlender
Дата 5.10.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да оно вообще-то уже сделано (с векторными иконками) и выглядит так:
Код

<ToolBar>
    <ToolBar.Resources>
        <Style TargetType="{x:Type ToolTip}" BasedOn="{StaticResource ToolTipToolBar}" />
    </ToolBar.Resources>

    <Button Style="{StaticResource ButtonToolBar}" Command="ApplicationCommands.Cut" ToolTip="Cut">
        <ToolBars:IconCut />
    </Button>
    <Button Style="{StaticResource ButtonToolBar}" Command="ApplicationCommands.Copy" ToolTip="Copy">
        <ToolBars:IconCopy />
    </Button>
и т.д.

Buttons находятся внутри ToolBarPanel, она работает как контент-презентер, просто так стили не принимает, попыток изменения ControlTemplate тоже не понимает. То ли ее нужно превращать в Control, то ли еще что.
Ладно, хоть стиль для ToolTip'ов работает - и то хлеб...

Спасибо за ответы.


Это сообщение отредактировал(а) exBlender - 5.10.2009, 23:41
--------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт.
PM MAIL   Вверх
math64
Дата 6.10.2009, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Вот увидел в msdn пример:
Код

<Window.Resources>
  <Style x:Key="{x:Static ToolBar.ButtonStyleKey}" TargetType="Button">
    <Setter Property="Foreground" Value="Blue"/>
    <Setter Property="FontSize" Value="14"/>
    <Setter Property="HorizontalAlignment" Value="Center"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
  </Style>
...
</Window.Resources>
...
<ToolBar >
  <Button Content="Button 1"/>
  <Button Content="Button 2"/>
</ToolBar >
...

PM   Вверх
exBlender
Дата 6.10.2009, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, попробую ToolBar.ButtonStyleKey. Думаю, это оно! У меня был прописан стиль просто для Button.

...

p.s. Да, ToolBar.ButtonStyleKey работает без всяких заморочек.

Это сообщение отредактировал(а) exBlender - 6.10.2009, 20:33
--------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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