Для примера есть 2 кнопки с разным контентом
<Button Name="ToggleButton" Height="40" Width="40" Cursor="Hand" Style="{DynamicResource PlayerButton}">
<Grid Width="10" Height="15" >
<Path Name="ToggleButtonPath" Data="M8 5v14l11-7z" Fill="White" Stretch="Fill" Height="15" Width="11"/>
</Grid>
</Button>
<Button Name="NextButton" Height="40" Width="40" Cursor="Hand" Style="{DynamicResource PlayerButton}">
<Grid Width="10" Height="15">
<Path Name="NextButtonPath" Data="M8 5v14l11-7z" Fill="White" Stretch="Fill" Height="15" Width="11"/>
</Grid>
</Button>
Отличаются в кнопках только Path.
Как можно реализовать программу так, чтобы не нужно было прописывать для каждого Path своё имя, но можно было изменять Path.
Для примера через имя кнопки ToggleButton.Path.Fill = ...
Когда вы помещаете что-то внутрь тега Button - на самом деле вы устанавливаете этой кнопке свойство Content, соответственно через Content и можно попробовать добраться до нужного элемента. Это будет выглядеть примерно так:
((Path)((Grid)Button.Content).Children[0]).Fill = ...
Но я вам не рекомендую так делать, ведь это, во-первых, не удобно и громоздко, во-вторых, не надежно, т.к. фактически дерево элементов может отличаться от того, что вы видите в разметке
Я бы оформил ваш код в виде стиля. Заодно не нужно дублировать код с контентом:
<Style TargetType="Button" x:Key="PlayerButton">
<!-- тут ваш старый стиль -->
</Style>
<!-- это будет ваш новый стиль -->
<Style TargetType="Button" x:Key="PlayerButtonEx" BasedOn="{StaticResource PlayerButton}">
<Setter Property="Width" Value="40"/>
<Setter Property="Height" Value="40"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Content">
<Setter.Value>
<Grid Width="10" Height="15" >
<!-- цвет Fill берём из свойства Foreground кнопки -->
<Path Data="M8 5v14l11-7z"
Fill="{Binding Foreground, RelativeSource={RelativeSource FindAncestor,
AncestorType=Button}}"
Stretch="Fill" Height="15" Width="11"/>
</Grid>
</Setter.Value>
</Setter>
</Style>
Использовать так:
<Button Name="ToggleButton" Style="{DynamicResource PlayerButtonEx}" Foreground="Blue"/>
<Button Name="NextButton" Style="{DynamicResource PlayerButtonEx}" Foreground="Blue"/>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости