添加自定义类的图形表示

时间:2015-02-02 21:27:43

标签: c# wpf mvvm graphics controls

下午好,

我尝试创建一个用户可以在运行时添加到UI的自定义类。基本上,为了简单起见,我有一个课程,我打电话给"工作站"它有一个名为Ping()的方法和一个名为IPAddress的属性。当调用Ping()时,如果IP地址是可ping的,我想要我的工作站" icon"出现,当它不能ping,我希望它不可见。

在运行时,用户会点击"添加工作站" (使用IP地址)将创建"工作站"的实例。他可以放置工作站"网格中的图标。如果需要,他也可以移动它。

最好的方法是什么?我试图继承Image类(用户控件),但我试图找到一种不会破坏MVVM原则的简单方法。

1 个答案:

答案 0 :(得分:1)

您需要使用DataTemplate

Xaml:

定义命名空间

  <UserControl xmlns:local="...your local namespace" >
      <UserControl.Resources>

         <DataTemplate x:Key="workStation" DataType="{x:Type local:WorkStation}">
              <TextBlock Text="{Binding IPAddress}" />          
        </DataTemplate>
      </UserControl.Resources>

      <ContentControl Content="{Binding CurrentWorkStation}" ContentTemplate="{StaticResource workStation}" />

   </UserControl>

cs:

  public class WorkStation 
  {
      public string IPAddress
      {
         get{ return "127.0.0.1";}
      }
  }
在您的ViewModel中

  public WorkStation CurrentWorkStation
  {
      get{return new WorkStation();}
  }