日期:2014-05-17  浏览次数:21743 次

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>
           &nbs