Для игры, которую я разрабатываю, код должен изменить (во время выполнения) стиль кнопки. По сути, кнопка представляет ячейку в (подобной шахматам) игре, а атрибут ячейки (фон, передний план или изображение) представляет состояние ячейки (захвачено, повреждено, враг и т. Д. c.).
Приложение вычисляет имя стиля кнопки и устанавливает для DataContext кнопки значение «StateA», «StateB», «State C» или «StateD», в зависимости от состояния ячейки.
Я пробовал несколько альтернатив, чтобы определить стиль кнопки. Ничего не работает (см. Ниже).
Как правильно определить привязку, которая будет выбирать стиль из нескольких предопределенных стилей элемента управления во время выполнения?
<Button Content="Button" Style="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" Click="Button_Click" />
<Button Content="Button" Style="{DynamicResource {Binding}}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" Click="Button_Click" />
Раздел стиля:
<Window x:Class="WpfApp2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp2"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<Style x:Key="StateA" >
<Setter Property="TextBlock.Background" Value="blue" />
</Style>
<Style x:Key="StateB" >
<Setter Property="TextBlock.Background" Value="yellow" />
</Style>
<Style x:Key="StateC" >
<Setter Property="TextBlock.Background" Value="green" />
</Style>
</Window.Resources>
<Grid>
<Button Name="foo" Content="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="75" Click="Button_Click" Style="{DynamicResource {Binding}}" />
</Grid>
</Window>