2014-03-07 117 views
0

我在我的xaml中有一個畫布對象,它有一個togglebutton和兩個文本塊,就像這樣。在畫布內切換按鈕

<ListBox.ItemTemplate> 
    <DataTemplate > 
     <Canvas HorizontalAlignment="Right" VerticalAlignment="Top" Width="485" 
       Margin="-15,0,-15,80" Visibility="Visible" 
       MouseLeftButtonUp="MandantenStackPanel_MouseLeftButtonDown"> 
     <ToggleButton Name="FavToggle" Checked="FavChecked" Unchecked="FavUnchecked" 
         Style="{StaticResource CustomToggleButtonStyle}" 
         Foreground ="White" BorderBrush="Red" HorizontalAlignment="Left" 
         Canvas.Left="0" Canvas.Top="0"> 
      <ImageBrush ImageSource="/Icons/favs.png" Stretch="UniformToFill" > 
      </ImageBrush> 
     </ToggleButton> 
     <TextBlock Text="{Binding MandantenNummer}" FontSize="24" 
        TextWrapping="Wrap" Canvas.Left="90" Canvas.Top="20"/> 
     <TextBlock Text="{Binding MandantenBezeichnung}" FontSize="24" 
        TextWrapping="Wrap" Canvas.Left="90" Canvas.Top="50"/> 
     </Canvas> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

在我的.cs我綁定集合項目到列表框也有一個名爲isFavorite布爾值,我想用我的切換按鈕進行切換。如何從切換事件處理程序中的畫布訪問數據上下文?我試了一下像我這樣做是像我這樣做,當你點擊文本框:

private void FavChecked(object sender, EventArgs e) 
     { 
      ClassX x = (sender as Canvas).DataContext as Class x; 
      x.isFavorite = true; 
     } 

但這當然不工作的原因我的發件人是切換按鈕,而不是在畫布上。我可以從這裏訪問畫布嗎?

回答

1

senderToggleButton而不是Canvas,因爲那是您附加該事件處理程序的控件。

另外,DataContext是遞歸設置的,所以ToggleButton繼承了父對象的相同數據上下文。