【问题标题】:Toggle Button inside a canvas画布内的切换按钮
【发布时间】:2014-03-08 05:27:05
【问题描述】:

我的 xaml 中有一个画布对象,它有一个切换按钮和两个文本块,就像这样。

<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;
        }

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-06-08
      • 1970-01-01
      • 2018-08-14
      • 2015-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多