2009-11-09 24 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