读书人

WPF如何使用自定义的ListBoxItem控件

发布时间: 2013-12-10 15:05:55 作者: rapoo

WPF,怎么使用自定义的ListBoxItem控件
可以在ListBox的模板中设置ListBoxItem样式:


<Style x:Key="ListBoxStyle1" TargetType="{x:Type ListBox}">
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="ListBoxItem">
...
...
</Style>
</Setter.Value>
</Setter>
</Style>

现在的问题是,假如我创建了一个自定义的MyListBoxItem类(继承自ListBoxItem类,主要是修改了鼠标点击的默认事件),那该怎么在ListBox的控件模板中使用这个自定义的MyListBoxItem呢?
[解决办法]
从ListBox派生一个自定义类型
重写GetContainerForItemOverride(),返回你的自定义ListBoxItem的实例
大概就是这样吧:
public class MyListBox:ListBox
{
protected override DependencyObject GetContainerForItemOverride()
{
return new MyListBoxItem();
}
}

[解决办法]
<Style?TargetType="ListBoxItem">
改为你自己的类型即可
<Style?TargetType="local:MyListBoxItem">
这里的local是当前项目的命名空间,定义方式不用我说了吧。
[解决办法]
添加local的前缀解析:
<Style x:Key="ListBoxStyle1" TargetType="{x:Type local:MyListBox}">
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="local:MyListBoxItem">
...
...
</Style>
</Setter.Value>
</Setter>
</Style>

读书人网 >C#

热点推荐