如何更改datatemplate中超链接按钮的可视状态?基本上我正在尝试遍历超链接按钮并根据当前URL将其可视状态设置为活动或非活动状态。超链接按钮位于itemscontrol的datatemplate内。 itemsource绑定到List,其中link是我的链接自定义类,它只包含uri和caption的一些属性。
在silverlight导航应用程序中设置活动超链接的样式是否有最佳实践?我正在使用的是从Silverlight导航应用程序项目模板中获取样板代码的方法。
答案 0 :(得分:1)
我认为实现这一目标的最佳方法是将HyperlinkButtons的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;
}
干杯,亚历克斯