![](/img/trans.png)
[英]How to change databinding of TextBlock by Click into ItemsControl MVVM?
[英]how to set the generated item for itemscontrol in databinding?
如果我使用ListBox进行数据绑定,则listbox会为每个项目生成一个listboxitem,组合框和comboBoxItem也是如此。 我的问题是-如何为给定的ItemsControl自行设置? (例如,使包含元素为Border)?
用于包装每个项目的默认项目是ContentPresenter
我不确定您为什么要覆盖它,因为它没有视觉外观或会干扰您的UI的特定行为。
如果要将每个项目都包装在Border
对象中,则可以设置ItemTemplate
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Blue" BorderThickness="2">
<TextBlock Text="{Binding }" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
如果要对ContentPresenter
应用任何特定样式,请设置ItemContainerStyle
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Column" Value="{Binding ColumnIndex}" />
<Setter Property="Grid.Row" Value="{Binding RowIndex}" />
</Style>
</ItemsControl.ItemContainerStyle>
用ILSpy挖掘了一些之后-
显然魔术是在
protected override DependencyObject GetContainerForItemOverride()
{
return new ListBoxItem();
}
这是ListBox所做的工作-在我的控件中,我也应该覆盖它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.