gpt4 book ai didi

c# - wpf customcontrol,如何在itemscontrol DataTemplate中绑定(bind)按钮点击

转载 作者:行者123 更新时间:2023-11-30 17:44:15 25 4
gpt4 key购买 nike

我有从 Textbox 继承的自定义控件,在 .cs 中我有 DependencyProperty SelectedItems(如果有的话,这些项目将显示在 texbox 中)如果 texbox 看起来不像普通的 texbox。

在模板的 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>

现在我如何在我的 .cs 文件中绑定(bind)那个按钮“X”..我正在尝试覆盖 OnApplyTemplate() 方法......当我点击项目 texbox 时我确实设法绑定(bind)了 mousedown 但我没有知道如何附加点击按钮

我的 .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 集合中删除项目的 Ant 。

picture

最佳答案

ItemsControl 的名称如下:

<ItemsControl x:Name="PART_SelectedItemsHost"

所以在模板中

<Button  BorderThickness="0" Grid.Column="1" Command="{Binding DataContext.DeleteItem, ElementName=PART_SelectedItemsHost}" CommandParameter="{Binding}">X</Button>

关于c# - wpf customcontrol,如何在itemscontrol DataTemplate中绑定(bind)按钮点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29881658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com