首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-12-10 
WPF,怎么使用自定义的ListBoxItem控件可以在ListBox的模板中设置ListBoxItem样式: Style x:KeyListBoxS

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>

热点排行