代码之家  ›  专栏  ›  技术社区  ›  rakete

WPF自定义控件

  •  0
  • rakete  · 技术社区  · 16 年前

    现在应用程序不仅要用图形显示网格。根据XML节点的不同,应用程序应该显示一个带有now或grahpic等图形的网格,并在文本的底部两行显示。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Merlyn Morgan-Graham    16 年前

    你解释了你的申请是什么,但你没有问一个问题。请陈述这个问题,我可以试着给你一个更好的答案。

    我最好的猜测是“我该怎么做?我需要写一个自定义控件吗?“如果这是你要问的,你可能不需要。

    我不确定这是否是一个好的资源,但XAML看起来可能是学习如何使用控制模板的一个很好的起点: http://ligao101.wordpress.com/2007/07/27/customizing-listview-in-wpf-part-i/

    只需在谷歌上搜索这些术语(“ListView数据模板”等),可能会得到一些有用的信息。

    编辑:

    从注释中可以看出,您正试图在UI的同一空间中支持两种类型的数据之一,具体取决于XML文件中的内容:

    • 仅图像
    • 图像,加上两行文字

    解决此问题的一种方法是为XML项创建视图模型,并将这些项绑定到这些视图模型:

    public class XmlItemViewModel // Call this something more appropriate to your app
    {
        public Visibility TextVisibility { get; set; }
        public string Text1 { get; set; }
        public string Text2 { get; set; }
        public Image Picture { get; set; }
    }
    

    如果已经有另一个类包含此数据,请保留它,并使视图模型从该类读取属性。

    属性设置为“{Binding TextVisibility}”,它应该可以工作。如果您设置viewmodel属性“Visibility.Collapsed”,文本块将消失,并且您的ViewBox应该缩小到只适合图像。

    如果这样做,就不需要自定义控件,只需要自定义ViewModel类。