Здравствуйте. Я не могу найти инфу в гугле, потому что не знаю что искать.
Как сделать на xaml аналог html+css в плане обобщений?
Ну например в css я создаю класс, прописываю в нем свойства. Могу для каждого элемента в классе прописать отдельные свойства. Например беру див, помещаю в него текст, текстовое поле и кнопку. Создаю в файле стилей класс, добавляю в него стиль для текста, для текстового поля и для кнопки. В диве указываю класс, равный классу в таблице стилей и все, что внутри дива, получают свойства, указанные в таблице стилей.
А вот в хамле такая конструкция не получается. Вот стили.
<Window.Resources>
<Style x:Key="OneLine">
<Setter Property="TextBox.MaxLines" Value="1"/>
<Setter Property="TextBox.HorizontalAlignment" Value="Stretch"/>
<Setter Property="TextBox.Width" Value="auto"/>
<Setter Property="TextBox.Margin" Value="0,0,0,10"/>
<Setter Property="TextBlock.Width" Value="auto"/>
<Setter Property="TextBlock.HorizontalAlignment" Value="Stretch"/>
<Setter Property="TextBlock.TextWrapping" Value="WrapWithOverflow"/>
<Setter Property="TextBlock.Margin" Value="0,0,0,0"/>
<Setter Property="Grid.Height" Value="auto"/>
<Setter Property="Grid.Width" Value="auto"/>
<Setter Property="Grid.HorizontalAlignment" Value="Stretch"/>
<Setter Property="Grid.VerticalAlignment" Value="Top"/>
<Setter Property="Label.Width" Value="auto"/>
<Setter Property="Label.Margin" Value="10,10,10,10"/>
</Style>
</Window.Resources>
Использовать эти стили я пытался разными способами в нужной мне стак панели.
Пробовал так:
<StackPanel HorizontalAlignment="Stretch" Height="auto" VerticalAlignment="Stretch" Width="auto" Style="{StaticResource OneLine}">
В этом случае применяется к самой стак панели, хотя она и не является лэйблом. То же самое свойство применяется к панели и из TextBlock. А вот к самим лэйблам внутри стак панели они не применяются.
Пробовал так:
<Style BasedOn="{StaticResource OneLine}">
</Style>
В этом случае ничего не происходит.
И пробовал так:
<Label Content="Прокси сервер:" Name="Label1" Style="{StaticResource OneLine}"/>
Так все работает хорошо, но я же не попугай, я не хочу для каждого элемента писать одно и то же. Я хочу написать у их родителя, а их заставить наследовать. И при этом чтобы родитель не перенимал свойства элемента, которым он не является (как в первом примере).