Silverlight ListBox всегда выделяет первый элемент при выборе - PullRequest
0 голосов
/ 09 ноября 2009

У меня ListBox заполняется в коде. Каждый элемент представляет собой простую комбинацию текста и URL-адреса, и при выборе элемента он должен перенаправляться на 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 Ответ

2 голосов
/ 09 ноября 2009

Проблема в том, что ваш список не получает выбор. Когда вы нажимаете кнопку «Гиперссылка», она обрабатывает событие щелчка, поэтому элемент не выделяется.

Вам нужно будет удалить кнопку гиперссылки, а затем выполнить навигацию по событию ListBox SelectionChanged, если вы хотите, чтобы выбор изменился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...