使用默认值绑定到当前datacontext

时间:2012-02-20 21:08:16

标签: c# wpf xaml data-binding

我有一个嵌套在按钮内的图像

   <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时,我尝试将图像的datacontext更改为游戏的实例,并将图像的源绑定到游戏的GameStatus属性。

    private void btn_InviteToPlay_Click(object sender, RoutedEventArgs e)
    {                        
        Game game = new Game(){ GameStatus = GameStatus.Waiting};
        img.DataContext = game;
    }       

此绑定不起作用,

首先,图像的DataContext最初是它的Ancestor的DataContext,我不想将它应用于Image。

我的问题是:

(1)如何在图像datacontext被赋予任何上下文之前应用默认值,同时忽略祖先的DataContext,因为图像嵌套在ItemsControl项中。

(2)一般来说,我无法为当前的DataContext应用绑定    (与游戏作为源和GameStatus作为路径绑定),所以我正在寻找正确的方法。

我相信要走的路是将每个图像绑定到默认的游戏实例。

我在标记中试图这样做: 在我的资源中:

   <local:Game x:Key="DefaultGame" />

图片:

   <Image  Source="{Binding Source=DefaultGame,Path=GameStatus, Converter={StaticResource MyGameStatusToIconConverter}}" x:Name="img_invitation"></Image>

这不起作用,任何想法。 我还想在代码中这样做,但无法弄清楚如何 因为我所做的只是给包含面板它的datacontext,所有都来自那里。

0 个答案:

没有答案