Нажмите на кнопку в верхней части поля со списком в WPF - PullRequest
3 голосов
/ 30 апреля 2010

Я могу заставить кнопку появляться и быть активной в раскрывающемся списке поля со списком, но я не могу получить выбранный элемент поля со списком (раскрывающийся список закрыт), чтобы кнопка была нажимаемой. Он всегда пропускает нажатие кнопки и просто открывает выпадающий список. По сути, я хочу, чтобы обработчик события Button_Click, который я настраивал, вызывался после его нажатия. Вот мой пример поля со списком, который показывает кнопку, но на которую нельзя нажать, когда она находится в выбранном элементе:

<ComboBox x:Name="MyCombo" Width="200" Height="30" ItemsSource="{Binding ListCombo}">
        <ComboBox.Resources>
            <DataTemplate DataType="{x:Type local:ComboItemClass}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Path=SampleText}" Width="120" />
                    <Button Width="20" Content="..." Click="Button_Click"/>
                </StackPanel>
            </DataTemplate>
        </ComboBox.Resources>
    </ComboBox>

1 Ответ

2 голосов
/ 30 апреля 2010

Помещение кнопок в выпадающие списки - это одна из тех действительно интересных функций, которые мы теперь МОЖЕМ сделать в WPF, и мы (включая меня) очень взволнованы, прежде чем мы остановимся, чтобы подумать, ДОЛЖНЫ ли мы сделать это.

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

EDIT:

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

    <ListBox>
        <ListBoxItem>
            <StackPanel Height="34" HorizontalAlignment="Left" Margin="12,16,0,0"  VerticalAlignment="Top" Width="430" Orientation="Horizontal">
                <Button Content="Edit"  />
                <Button Content="Delete"  />
                <TextBlock Text="Port Information here" VerticalAlignment="Center" Margin="20,0" />
            </StackPanel>

        </ListBoxItem>
        <ListBoxItem>
            <StackPanel Height="34" HorizontalAlignment="Left" Margin="12,16,0,0"  VerticalAlignment="Top" Width="430" Orientation="Horizontal">
                <Button Content="Edit"  />
                <Button Content="Delete"  />
                <TextBlock Text="Port Information here" VerticalAlignment="Center" Margin="20,0" />
            </StackPanel>

        </ListBoxItem>
        <ListBoxItem>
            <StackPanel  Height="34" HorizontalAlignment="Left" Margin="12,16,0,0"  VerticalAlignment="Top" Width="430" Orientation="Horizontal">
                <Button Content="Edit"  />
                <Button Content="Delete"  />
                <TextBlock Text="Port Information here" VerticalAlignment="Center" Margin="20,0" />
            </StackPanel>

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