Silverlight ListBox始终在选择时突出显示第一个项目

时间:2009-11-09 16:19:26

标签: c# silverlight

我在代码中填充了一个ListBox。每个项目都是一个简单的文本/网址组合,当选择一个项目时,它应该重定向到所选项目的URL。这是按预期工作,但我在ListBox中选择项目时遇到问题。似乎无论您选择哪个项目,ListBox中的第一个项目每次都会突出显示。您仍然被带到正确的项目,但它突出显示错误的项目。有什么想法吗?

编辑:这是IE8中的问题,但在FF3中按预期工作。

编辑:添加示例代码。 HeadlineData是一个自定义类,基本上只是用于保存要显示的数据。

<Canvas x:Name="HeadlineCanvas">
    <ListBox x:Name="HeadlineListBox" Width="260" Height="380"  BorderBrush="Gainsboro" BorderThickness="1" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Hidden">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Vertical">
                    <HyperlinkButton MinHeight="20" MaxHeight="40" Width="240" NavigateUri="{Binding Url}" IsTabStop="False">
                        <TextBlock TextWrapping="Wrap" Text="{Binding Title}"/>
                    </HyperlinkButton>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Canvas>

C#代码

public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();

        HeadlineData hd = new HeadlineData();
        hd.Title = "Title 1";
        hd.HeadlineNewsTitle = "Title 1";
        hd.LastModifiedTime = DateTime.Now;
        hd.Url = "http://www.google.com";

        this.HeadlineListBox.Items.Add(hd);

        hd = new HeadlineData();
        hd.Title = "Title 2";
        hd.HeadlineNewsTitle = "Title 2";
        hd.LastModifiedTime = DateTime.Now;
        hd.Url = "http://www.google.com";

        this.HeadlineListBox.Items.Add(hd);
    }
}

1 个答案:

答案 0 :(得分:2)

问题是你的列表框没有得到选择。当您单击“超链接”按钮时,它正在处理单击事件,因此该项目未被选中。

如果要更改选择,则需要删除超链接按钮,然后在ListBox SelectionChanged事件上进行导航。