在Silverlight中的数据模板内设置超链接按钮

时间:2010-05-13 17:49:47

标签: silverlight

如何更改datatemplate中超链接按钮的可视状态?基本上我正在尝试遍历超链接按钮并根据当前URL将其可视状态设置为活动或非活动状态。超链接按钮位于itemscontrol的datatemplate内。 itemsource绑定到List,其中link是我的链接自定义类,它只包含uri和caption的一些属性。

在silverlight导航应用程序中设置活动超链接的样式是否有最佳实践?我正在使用的是从Silverlight导航应用程序项目模板中获取样板代码的方法。

1 个答案:

答案 0 :(得分:1)

我认为实现这一目标的最佳方法是将HyperlinkBut​​tons的IsEnabled属性绑定到您的URL并在其间放置一个转换器。

我认为你有类似的东西:

<ListBox
  ItemsSource="{Binding Path=Links}">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <HyperlinkButton
        NavigateUri="{Binding Path=LinkUrl}"
        Content="{Binding Path=LinkUrl}" />
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

所以你可以这样添加IsEnabled-binding:

<ListBox
  ItemsSource="{Binding Path=Links}">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <HyperlinkButton
        IsEnabled="{Binding Path=LinkUrl, Converter={StaticResource LinkUrlToIsEnabledConverter}}"
        NavigateUri="{Binding Path=LinkUrl}"
        Content="{Binding Path=LinkUrl}" />
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

然后在转换器中执行例如:

public object Convert(...)
{
  var url = (Uri)value;
  if (url.AbsolutePath.EndsWith(".html"))
    return true;
  return false;
}

干杯,亚历克斯