获取DataTemplate中的元素

时间:2011-06-16 11:30:50

标签: c# silverlight xaml

我有一个以下的XAML,我需要在运行时从代码隐藏文件中更改imageRemoveButton的可见性。如何访问该按钮?

<ItemsControl x:Name="ImagesItemsControl">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Border BorderBrush="#ffdddddd"
                    BorderThickness="0,0,0,1">
                <Grid Margin="0,2">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="15" />
                        <ColumnDefinition />
                        <ColumnDefinition Width="20" />
                    </Grid.ColumnDefinitions>

                    <Grid Grid.Column="1"
                          VerticalAlignment="Center">
                        <TextBlock Text="{Binding Name}"
                                      TextWrapping="Wrap" />
                    </Grid>
                    <Button Grid.Column="3"
                            Width="20"
                            Height="20"
                            Content="X"
                            Template="{StaticResource ButtonAddTab}"
                            Style="{StaticResource ButtonWizard}"
                            Tag="{Binding}"
                            x:Name="imageRemoveButton"
                            Click="ImageRemoveButton_Click" />
                </Grid>
            </Border>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

3 个答案:

答案 0 :(得分:1)

使用按钮上的已加载事件来保存对cs文件中按钮的引用。需要时使用此参考来更改可见性。

答案 1 :(得分:0)

您不能在模板中引用名称元素。模板生成的代码隐藏/设计器属性不匹配。

您希望将模板中控件的可见性绑定到数据项的属性。这意味着您需要为数据项添加属性。您能否提供有关数据项的更多详细信息?如果属性是bool值,请使用VisibilityConvertor(在此站点上打一打)。

将模板想象为总是从绑定中提取设置,而不是从外部填充设置。

答案 2 :(得分:0)

尝试使用Source绑定到将管理按钮可见性状态的类。向所有数据项添加属性将非常痛苦,但如果需要根据数据项的属性设置按钮的可见性,则可能需要这样做。根据标准MVVM模式,您可以从C#控制按钮的可见性。如果您需要按钮的特定实例,可以向其添加Loaded事件处理程序并相应地对其进行缓存。