在画布内切换按钮

时间:2014-03-07 14:20:42

标签: xaml windows-phone-8 windows-phone

我的xaml中有一个canvas对象,它有一个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的布尔值,我想用我的togglebutton切换。如何从我的切换事件处理程序内部从画布访问数据上下文?我试着像我这样做,就像我点击文本框时那样:

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

但那当然不起作用,因为我的发件人是togglebutton而不是画布。我可以从这里访问画布吗?

1 个答案:

答案 0 :(得分:1)

senderToggleButton而不是Canvas,因为这是您附加该事件处理程序的控件。

此外,DataContext是递归设置的,因此ToggleButton继承了父级具有的相同数据上下文。