У меня есть настраиваемый элемент управления, который наследуется от текстового поля, в .cs у меня есть DependencyProperty SelectedItems (эти элементы будут отображаться внутри texbox, если они есть), если texbox не выглядит как обычный texbox.wpf customcontrol, как связать кнопку click внутри itemscontrol DataTemplate
В Generic.xaml в шаблоне я добавил новую границу и внутри я поставил ItemsControl с шаблоном элемента, как этот
XAML itemControl части:
<Border BorderBrush="Green" BorderThickness="1">
<ItemsControl x:Name="PART_SelectedItemsHost"
ItemsSource="{TemplateBinding SelectedItems}"
ItemTemplate="{TemplateBinding SelectedItemsTemplate}"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Margin="{TemplateBinding Padding}"
Visibility="Visible">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True">
</WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Border>
Xaml ItemTemplate часть:
<DataTemplate x:Key="DefaultSelectedItemsTemplate" >
<Border x:Name="selectedItemBorder" BorderBrush="Gray" BorderThickness="1" CornerRadius="5" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" Margin="5,1,1,1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="15"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding}" Margin="5,0,3,0"></TextBlock>
<Button BorderThickness="0" Grid.Column="1" Click="???" or Command="???" >X</Button>
</Grid>
</Border>
</DataTemplate>
Теперь, как я могу связать эту кнопку «X» в моем файле .cs. Я пытаюсь сделать это переопределением метода OnApplyTemplate() ... и мне удалось связать mousedown, когда я нажимаю на элемент texbox, но я не знаю, как прикрепить этот щелчок на кнопке
моего .cs часть
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
ItemsControl itmControl = GetTemplateChild("PART_SelectedItemsHost") as ItemsControl;
if (itmControl != null)
{
itmControl.MouseLeftButtonDown += new MouseButtonEventHandler(itmControl_MouseLeftButtonDown);
// blind click on X buttons in ItemsControl
}
}
private void itmControl_MouseLeftButtonDown(object obj, MouseButtonEventArgs e)
{
//IsMouseLeftButtonDown = true;
System.Diagnostics.Debug.WriteLine(e.OriginalSource.ToString());
object item = (e.OriginalSource as FrameworkElement).DataContext;
deleteSelectedItem(item);
}
и вот картина, как этот элемент управление выглядит как муравей, что кнопка X необходимо удалить элемент из коллекции SelectedItem.
Этот вопрос повторяется и ответил здесь http://stackoverflow.com/questions/ 29872080/wpf-customcontrol-binding-itemscontrol-datatemplate-button/29874527 # 29874527 Если вам нужна дополнительная информация, разделите свои вопросы о вещах, которые вы не знаете –
его не ответил, и я не знаю, как удалить старый, потому что я написал его очень плохо и слишком сложно понять, я думаю. –