WPF Как сделать собственный комбинированный список с кнопкой внутри, чтобы очистить - PullRequest
0 голосов
/ 18 октября 2018

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

Это мой оригинальный комбинированный список: (я знаю, панель стека должна быть внутри кнопки)

<TextBlock Text="ComboBox:"></TextBlock>
<ComboBox
     ItemsSource="{Binding ITEMS}"
     SelectedItem="{Binding Item}"
     DisplayMemberPath="Description"
     IsTextSearchEnabled="True"
     IsEditable="False"
     IsDropDownOpen="False">
 </ComboBox>
 <StackPanel
     Orientation="Horizontal"
     HorizontalAlignment="Right"
     MouseEnter="GridSplitter_MouseEnter" 
     MouseLeave="GridSplitter_MouseLeave">
         <Image
               Source="../Images/clos.png"
               Height="12" Width="15" Margin="0 0 20 4">
         </Image>
 </StackPanel>

Мой вопрос: как я могу создать пользовательский элемент комбинированного списка, чтобы мне не приходилось повторять этот код для каждого комбинированного списка, который я должен сделать.И очищенное значение - selectedItem.

Это будет примерно так:

<custom:ComboBoxWithClearance>
      ItemsSource="{Binding ITEMS}"
      SelectedItem="{Binding Item}"
      DisplayMemberPath="Description"
      IsTextSearchEnabled="True"
      IsEditable="False"
      IsDropDownOpen="False"
</custom:ComboBoxWithClearance>

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Вы можете создать UserControl с именем "ComboBoxWithClearance" и добавить свойства зависимостей (ItemsSource, SelectedItem) к выделенному фрагменту кода этого.

Затем вы переместили бы свой текущий XAML в файл разметки UserControl и связали свойства с соответствующим им созданным вами пользовательским свойством зависимости:

<ComboBox DataContext="{Binding RelativeSource={RelativeSource AncestorType=UserControl}}"
     ItemsSource="{Binding ItemsSource}"
     SelectedItem="{Binding SelectedItem}"
     ... />

После того, как вы сделалиТаким образом, вы сможете использовать свой элемент управления в других представлениях и устанавливать / связывать его свойства зависимостей с тем, что вы хотите, например:

<local:ComboBoxWithClearance
  ItemsSource="{Binding ITEMS}"
  SelectedItem="{Binding Item}">
  ...
</custom:ComboBoxWithClearance>
0 голосов
/ 18 октября 2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...