Стиль комбинированного поля для отображения рейтинга и описания WPF - PullRequest
1 голос
/ 13 января 2010

Я не очень хорошо разбираюсь в стилях в WPF, поэтому я решил спросить здесь и посмотреть, сможет ли кто-нибудь помочь.

У меня есть поле со списком, которое привязано к модели представления, которая имеет рейтинг и описание, когда я наводю указатель мыши на элемент, элемент изменяется, чтобы показать рейтинг и описание для этого элемента.

Тем не менее, это работает нормально, потому что некоторые описания действительно большие, и нет переноса слов, это выглядит просто уродливо.

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

Примерно так:

альтернативный текст http://img94.imageshack.us/img94/6787/comboidea.png

Может ли кто-нибудь помочь мне с этим или, по крайней мере, указать мне правильное направление, чтобы начать.

Спасибо, Nathan

Ответы [ 3 ]

0 голосов
/ 13 января 2010

Есть ли причина, по которой вы не хотите использовать всплывающую подсказку для этого?

Редактировать

Я только что понял, что вы на самом деле просите. Требуется какой-либо способ отображения свойств элемента, который является текущим выбором в списке ComboBox's.

Вы не можете сделать это с ComboBox как таковым, потому что раскрываемое им свойство SelectedItem не изменяется, пока пользователь перемещается по раскрывающемуся списку, оно изменяется только тогда, когда пользователь делает выбор ,

Но если вы отредактируете шаблон управления ComboBox (и здесь Blend полезен), вы получите доступ к самому ItemsControl раскрывающегося списка (я забыл, какого типа ItemsControl, у меня есть не посмотрел шаблон в течение некоторого времени). И вы сможете получить доступ к его SelectedItem свойству.

Возможно, стоит построить UserControl на основе ComboBox, добавить к нему свойство зависимости CurrentItem и связать его со свойством ItemsControl SelectedItem. Как только вы это сделаете, у вас будет ComboBox, который выглядит как обычный ComboBox, за исключением того, что он предоставляет свойство CurrentItem, к которому можно привязать другой элемент управления.

P.S. Я на самом деле не делал этого, поэтому я не знаю, с какими хитростями вы столкнетесь, когда попробуете.

0 голосов
/ 15 января 2010

Используйте DataTemplate, чтобы полностью переопределить строку:

    <DataTemplate x:Key="superRow" >
        <StackPanel Orientation="Horizontal">
            <StackPanel.Resources>
                <Style TargetType="{x:Type TextBlock}">
                    <Setter Property="Margin" Value="5,2,0,0"/>
                </Style>
            </StackPanel.Resources>
            <TextBlock Text="{Binding Path=Rating}"/>
            <TextBlock Text="{Binding Path=RatingDescription}"/>
        </StackPanel>
    </DataTemplate>

Затем в выпадающем списке:

 <ComboBox ItemTemplate="{StaticResource superRow}" />

(другие необходимые опции comboBox упущены для простоты)

0 голосов
/ 13 января 2010

Вы можете редактировать копию шаблона данных (Интернет подскажет вам, как это легко сделать с помощью Blend). В этом шаблоне данных добавьте область справа.

Это может быть другая панель, вы можете расширить сетку вправо или добавить горизонтальный удлинитель ... как бы вы этого не хотели.

Затем вы можете добавить две привязки к тому, что вы добавляете справа. Одна привязка будет для описания, которое вы хотите отобразить (привязать его к некоторому текстовому полю). И второй будет видимость новой панели. Установите его, чтобы свернуть, когда описание слишком длинное.

Я был бы более наглядным, но я предполагаю, что это все, что вам действительно нужно.

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