关于WPF中ItemsControl系列控件中Item不能继承父级的DataContext的解决办法

WPF中所有的集合类控件,子项都不能继承父级的DataContext,需要手动将绑定的数据源指向到父级控件才可以。

<DataGridTemplateColumn Header="操作">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}" CommandParameter="{Binding SysID}" Content="删除"></Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

 

此文转载自:http://www.cnblogs.com/veboys/p/3246207.html 

 

Added by Andy,2013/12/12

转载于:https://www.cnblogs.com/action98/p/3471760.html

是的,WPFItemsControl可以通过Thumb来实现拖动边框来改变控件的大小。可以使用Thumb控件作为ItemsControl每个项的一部分,并在其拖动事件实现大小调整逻辑。具体实现可以参考以下步骤: 1. 在ItemsControlItemTemplate添加Thumb控件,设置它的样式和位置。 2. 在Thumb控件的DragDelta事件获取鼠标拖动偏移量,并根据偏移量调整控件的大小。 3. 在Thumb控件的DragCompleted事件更新控件的布局。 以下是一个简单的示例,演示如何使用Thumb来实现拖动边框改变控件大小的功能: ```xml <ItemsControl ItemsSource="{Binding Items}"> <ItemsControl.ItemTemplate> <DataTemplate> <Grid> <!-- 控件内容 --> <TextBlock Text="{Binding}" /> <!-- 右下角的Thumb控件 --> <Thumb Width="10" Height="10" HorizontalAlignment="Right" VerticalAlignment="Bottom" DragDelta="Thumb_DragDelta" DragCompleted="Thumb_DragCompleted"> <Thumb.Style> <Style TargetType="Thumb"> <Setter Property="Background" Value="Gray" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Thumb"> <Border Background="{TemplateBinding Background}" /> </ControlTemplate> </Setter.Value> </Setter> </Style> </Thumb.Style> </Thumb> </Grid> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> ``` 在代码,可以根据Thumb控件的DragDelta事件的偏移量来调整控件的大小: ```csharp private void Thumb_DragDelta(object sender, DragDeltaEventArgs e) { var thumb = (Thumb)sender; var item = (FrameworkElement)thumb.DataContext; item.Width += e.HorizontalChange; item.Height += e.VerticalChange; } ``` 在Thumb控件的DragCompleted事件更新控件的布局: ```csharp private void Thumb_DragCompleted(object sender, DragCompletedEventArgs e) { var thumb = (Thumb)sender; var item = (FrameworkElement)thumb.DataContext; item.InvalidateMeasure(); item.InvalidateArrange(); } ``` 注意,以上代码只是一个简单的示例,实际情况可能会更复杂。需要根据具体需求进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值