我有一个以下的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>
答案 0 :(得分:1)
使用按钮上的已加载事件来保存对cs文件中按钮的引用。需要时使用此参考来更改可见性。
答案 1 :(得分:0)
您不能在模板中引用名称元素。模板生成的代码隐藏/设计器属性不匹配。
您希望将模板中控件的可见性绑定到数据项的属性。这意味着您需要为数据项添加属性。您能否提供有关数据项的更多详细信息?如果属性是bool值,请使用VisibilityConvertor(在此站点上打一打)。
将模板想象为总是从绑定中提取设置,而不是从外部填充设置。
答案 2 :(得分:0)
尝试使用Source
绑定到将管理按钮可见性状态的类。向所有数据项添加属性将非常痛苦,但如果需要根据数据项的属性设置按钮的可见性,则可能需要这样做。根据标准MVVM模式,您可以从C#控制按钮的可见性。如果您需要按钮的特定实例,可以向其添加Loaded
事件处理程序并相应地对其进行缓存。