我的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而不是画布。我可以从这里访问画布吗?
答案 0 :(得分:1)
sender
为ToggleButton
而不是Canvas
,因为这是您附加该事件处理程序的控件。
此外,DataContext是递归设置的,因此ToggleButton继承了父级具有的相同数据上下文。