Редактирование дочерних объектов поля со списком с помощью c # и Wpf - PullRequest
2 голосов
/ 05 июля 2010

Backgorund

В настоящее время я пишу программу, которая позволяет пользователю выбирать производство из поля со списком. Поле со списком создается в wpf с использованием следующего сегмента кода wpf:

<ComboBox Height="23" Margin="40.422,128.423,229.908,0" Name="itemProductManufacture" ToolTip="Click to open drop down menu" VerticalAlignment="Top" Text="Select A Manufacture" SelectionChanged="itemProductManufacture_SelectionChanged" DropDownOpened="itemProductManufacture_DropDownOpened">
        <ComboBox.ItemTemplate> 
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding ManufactureId}" Width="0"/>
                    <Image Name="itemManufactureImage" Source="{Binding ManufactureImage}" Height="15" Width="70" Stretch="Uniform"/>
                    <TextBlock Text="{Binding ManufactureName}"/>
               </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

Данные предоставляются из базы данных, и каждая запись имеет изображение, имя и идентификатор (намеренно не показаны)

Задача

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

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

Спасибо

Jonathan

Ответы [ 3 ]

0 голосов
/ 05 июля 2010

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

Попробуйте что-то вроде этого -

Image image = this.itemProductManufacture.ItemTemplate.FindName("itemManufactureImage", this) as Image;

Мне непонятно, хотите ли вы изменить размер изображения для всех элементов или для выбранного? Если вам нужно получить доступ к изображению для конкретного элемента в выпадающем списке, вам, возможно, придется использовать ItemContainerGenerator.ContainerFromItem, как описано в следующих сообщениях -

WPF - ItemsControl - Как мне найти мой элемент "CheckBox", который находится в шаблоне Item?

http://www.sitechno.com/Blog/HowToUseAttachedPropertiesAsAnExtensionMechanismForACheckedListbox.aspx

посмотрите на это, чтобы узнать различные способы поиска элементов управления - Как найти элементы управления WPF по имени или типу?

0 голосов
/ 05 июля 2010

Попробуйте это:

<Image Height = "{Binding Path=IsDropDownOpen, 
                          RelativeSource={RelativeSource FindAncestor, 
                                          AncestorType={x:Type ComboBox}}, 
                          Converter={StaticResource myBoolToHeightConverter}}" />

Пример для конвертера здесь

0 голосов
/ 05 июля 2010

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

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