【问题标题】:Access button in ListBoxItem in SilverlightSilverlight 中 ListBoxItem 中的访问按钮
【发布时间】:2010-06-25 17:36:47
【问题描述】:

大家好。我是 Silverlight 的新手,想访问属于 ListBoxItem 的按钮控件。但是,我不太确定如何执行此操作。我的 XAML 是:

<DataTemplate x:Key="ItemTemplate2">
            <Grid Height="51">
                <TextBlock x:Name="tbName" Text="{Binding Property1}" Margin="0,0,98,0" d:LayoutOverrides="Height" Grid.ColumnSpan="2" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                <Button x:Name="btnInfo"  HorizontalAlignment="Right" Margin="0,-11,0,0" Width="87" Height="54" VerticalAlignment="Top" Background="#FF8EC1D2" BorderBrush="#FF8EC1D2" BorderThickness="0">
                    <Image Source="../Images/btnNameImage.png" Stretch="None"/>                 
                </Button>
            </Grid>
        </DataTemplate>

如何从代码隐藏中访问“btnInfo”?

感谢您的帮助

【问题讨论】:

  • 您要访问 btnInfo 的什么属性?您应该可以直接通过“btnInfo”使用它...
  • 它是 DataTemplate 的一部分,因此它将位于与页面的 XAML 不同的名称范围内,并且无法在代码隐藏中直接访问。你到底想用这个按钮做什么?
  • 我想更改按钮的图像。

标签: c# silverlight button listboxitem itemtemplate


【解决方案1】:

你不能直接从后面的代码访问它,但你应该可以通过注册一个事件来做你想做的事。将Loaded 事件添加到按钮,然后在您的代码隐藏中定义相应的方法。

protected btninfo_Loaded(object sender, EventArgs e)
{
    Button btnInfo = (Button) sender;
    //do whatever you need to do
}

显然你可以做同样的事情来处理点击事件或任何你想要的。

【讨论】:

  • 谢谢。我想对列表中的每个按钮执行此操作,而不仅仅是选定的按钮。我还尝试为图像替换创建故事板,但我无法从后面的代码访问故事板。
  • 每当您的 DataTemplate 之一被加载到模板中时,这应该运行,这不会发生吗?您能否展示更多您的代码(例如托管模板的 ItemsControl?
  • 谢谢。我需要从任何按钮事件本身之外访问按钮。所以我将每个按钮存储在一个数组中(在 laoded 事件中),并使该数组成为一个类级别的变量。这工作正常。再次感谢!
【解决方案2】:

这并不能直接回答您以编程方式访问数据模板的问题,但是 Binding 怎么样?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2010-10-19
    相关资源
    最近更新 更多