у меня есть изображение, вложенное в кнопку
<ListBox>
<ListBox.ItemsSource>
<Binding Path="Peers"></Binding>
</ListBox.ItemsSource>
<ListBox.ItemTemplate>
<DataTemplate>
<ListBoxItem>
<Button x:Name="btn_InviteToPlay" Click="btn_InviteToPlay_Click">
<Button.Content>
<Image Source="{Binding GameStatus,Converter={StaticResource MyGameStatusToIconConverter}}" x:Name="img_invitation"></Image>
</Button.Content>
</Button>
</ListBoxItem>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
когда я нажимаю btn_InviteToPlay, я пытаюсь изменить текстовый текст изображения на экземпляр Game и привязать источник изображения к свойству GameStatus игры.
private void btn_InviteToPlay_Click(object sender, RoutedEventArgs e)
{
Game game = new Game(){ GameStatus = GameStatus.Waiting};
img.DataContext = game;
}
эта привязка не работает,
Прежде всего, DataContext для изображения изначально является DataContext его Предка, который я не хочу применять к изображению.
мой вопрос:
(1), как применить значение по умолчанию перед тем, как тексту данных изображения будет задан какой-либо контекст, игнорируя DataContext предка, поскольку изображение вложено в ItemControl Item.
(2) в целом я не смог применить привязку для текущего DataContext
(привязка к Game в качестве источника и GameStatus в качестве пути), поэтому я ищу правильный способ сделать это.
Я полагаю, что для этого нужно привязать каждое изображение к экземпляру игры по умолчанию.
я попытался сделать это в разметке:
в моих ресурсах:
<local:Game x:Key="DefaultGame" />
Изображение:
<Image Source="{Binding Source=DefaultGame,Path=GameStatus, Converter={StaticResource MyGameStatusToIconConverter}}" x:Name="img_invitation"></Image>
это тоже не работает, любые идеи.
Также я думал сделать это в коде, но не мог понять, как
так как все, что я делаю, это даю содержащую панель его datacontext, и все происходит оттуда.