2009-11-09 54 views
0

我在代码中填充了一个ListBox。每个项目都是一个简单的文本/网址组合,当选择一个项目时,它应该重定向到所选项目的URL。这是按预期工作,但我在ListBox中选择项目时遇到问题。看起来无论您选择哪个项目,ListBox中的第一个项目都会每次突出显示。你仍然被带到正确的项目,但它突出了错误的一个。任何想法?Silverlight 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); 
    } 
} 
+0

你能发表你正在使用的代码片段吗? – Bryant

回答

2

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

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

+0

这绝对关心了大部分问题。我能看到的唯一问题是,如果您选择/使用滚动条,如果存在,则列表框也将默认选择第一个项目。有什么想法呢? –

+0

我无法用上面的代码复制该行为。更新的代码是什么样的?你的标题是否比“标题1”长?可能是某种布局问题。我通常使用Silverlight Spy来调试这些类型的东西,因为您可以使用Silverlight Spy进行调试,以便您可以看到它有多大。 http://silverlightspy.com/ – Bryant

相关问题