【问题标题】:windows store app xaml template propertywindows 商店应用程序 xaml 模板属性
【发布时间】:2014-03-14 08:04:30
【问题描述】:

我已经定义了自定义ListviewItemStyle。 在样式模板中有一个按钮

<Button x:Name="btnAbout"  Grid.Column="1"
        Style="{StaticResource GCAboutButton}"
        Visibility="Collapsed"     
        Command="{Binding DataContext.AboutCommand, ElementName=List}"
        CommandParameter="{Binding Item}">
</Button>

VisualStateManagerVisibitity这个按钮变成Visible,在Selecetd状态下ListViewItem

ListView 包含不同类型的项目,派生自基类,例如:

class Base; class Man: Base; class Woman:Base;

问题是: button must be visible, when SelectedItem is Man, invisible, when selected item is Woman. 如何从代码中访问模板中定义的按钮。例如,来自ListViewSelectionChanged 事件。

【问题讨论】:

  • 您必须对Visibility 属性使用数据绑定。您可能需要定义一个转换器来执行此操作。
  • 为男人和女人定义两个新的视觉状态。在这些 VisualStates 中更改按钮的可见性。从 SelectionChanged 事件中应用适当的 VisualState。
  • @VictoryJessie 视觉状态是 ViewElement 的一个参数。如何获取列表框的选定视图?我可以获取选定的绑定项目,但不能查看。
  • 使用 GetTemplateChild(string childName) 方法从模板中获取按钮。 msdn.microsoft.com/en-us/library/…
  • @VictoryJessie 你误会了,如何获取 ListViewItem 的模板,即被选中?

标签: c# wpf xaml windows-store-apps


【解决方案1】:

您可以使用隐式数据模板。看到这个linkthis 也可能有帮助。 DataTemplate 类的 DataType 属性与 Style 类的 TargetType 属性非常相似,因此您可以根据您的类型来管理模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多