WPF程序中treeview图标显示不全

我有一个usercontrol控件,里面包含一个treeview控件,其中里面的数据是动态加载的(图片是动态加载到imagelist里面的,然后每一个node都对应一个图... 我有一个usercontrol控件,里面包含一个treeview控件,其中里面的数据是动态加载的(图片是动态加载到imagelist里面的,然后每一个node都对应一个图片),这个在Form应用程序中没问题,但是放到wpf程序中(即创建一个wpf窗体,将usercontrol作为host的children)方法都是一样的,但是treeview里的图标显示不全,不知道你遇到过没有 展开
 我来答
丙外昳8609
2011-06-22 · TA获得超过632个赞
知道小有建树答主
回答量:1306
采纳率:0%
帮助的人:763万
展开全部
以写一个通用类, 以扩展的附加属性附加到所有的 UIElement. (已经写好了, 但不贴出来了, 留点思考). 但给个大概的.

先说写好这个类后, 在 xaml 中如何对 UIElement 设置快捷键.
假定这个类叫 MyHotKeyClass, 在命名空间 WPFApp1 上.
下面是一份 xaml 档, Window 为根元素, 包含一个 StackPanel, 而 StackPanel 有 Button, Image 两个子元素, 现在对 Button 设置快捷键 为 Ctrl + F, 对应 Click 事件; 对 Image 设置快捷键为 Shift + D, 对应 MouseLeftButtonDown 事件:
首先在 Window 引用 xmlns
<Window ...
xmlns:sk="clr-namespace:WPFApp1"
...>
<StackPanel>
<Button Content="Button"
sk:MyHotKeyClass.AccessKey="F"
sk:MyHotKeyClass.ModifierKey="Control"
sk:MyHotKeyClass.RoutedEvent=""
Click="Button_Click"
/>
<Image Source="C:\wpf.jpg" Stretch="None"
sk:MyHotKeyClass.AccessKey="D"
sk:MyHotKeyClass.ModifierKey="Shift"
sk:MyHotKeyClass.RoutedEvent=""
MouseLeftButtonDown="Image_MouseLeftButtonDown"
/>
</StackPanel>
</Window>

只是写一个类, 然后 就可以在各个 xaml 引用了, 非常简单.
但如何编写这个 MyHotKeyClass 呢?

首先, 它是一个普通类, (有些网站说非要从 DependencyObject 衍生, 其实不是必须的), 从上面设置可以看出, 它至少有三个 附加属性 (DependencyProperty): AccessKey, ModifierKey, RoutedEvent.
于是有了下面这个类的结构:
namespace WPFApp1
{
public class MyHotKeyClass
{
// 设置一个 AccessKey 的附加属性
public static readonly DependencyProperty AccessKeyProperty
= DependencyProperty.RegisterAttached("AccessKey", typeof(Key), typeof(MyHotKeyClass), new UIPropertyMetadata(...));
public static Key GetAccessKey(DependencyObject source)
{
...
return (Key)source.GetValue(AccessKeyProperty);
}
public static void SetAccessKey(DependencyObject source, Key value)
{
...
source.SetValue(AccessKeyProperty, value);
}

// 其余两个 ModifierKey 和 RoutedEvent 对应的元数据类型分别是
// typeof(ModifierKeys) 和 typeof(RoutedEvent)
// 详细的就不写了, 和第一个 AccessKey 的定法基本上一致.
}
}

最后测试这个类的工作, 在 Window 对应的类下写好按钮 Click 事件:
... Button_Click(...)
{
MessageBox.Show("Button was clicked");
}
... Image_MouseLeftButtonDown(...)
{
...
}
当按下 Ctrl + F 时, 就相当于点击了按钮, 当按下 Shift + D 时就相当于在 Image 控件上点了鼠标左键.

-------- END ----
关键点是 写好 DependencyProperty.
Good Luck
追问
这是在form中的运行效果
百度网友0f8ac26
2011-06-24 · TA获得超过227个赞
知道小有建树答主
回答量:302
采纳率:0%
帮助的人:200万
展开全部
图片显示不全是因为你没有设置啊,图片默认状态也许是填充满。你设置stretch属性。具体值作用自己差MSDN
追问
我又具体的说明了此问题
http://zhidao.baidu.com/question/282701851.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式