Advertisement
Guest User

Untitled

a guest
Sep 17th, 2014
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. <UserControl.Resources>
  2. <vm:StateChartViewModel x:Key="StateChartViewModel"/>
  3. <DataTemplate DataType="{x:Type vm:StateViewModel}">
  4. <views:StateWidget/>
  5. </DataTemplate>
  6. <DataTemplate DataType="{x:Type vm:TransitionViewModel}">
  7. <views:TransitionWidget/>
  8. </DataTemplate>
  9. </UserControl.Resources>
  10.  
  11.  
  12. <Canvas Background="Transparent"
  13. DataContext="{StaticResource StateChartViewModel}">
  14. <i:Interaction.Triggers>
  15. <i:EventTrigger EventName="MouseLeftButtonDown">
  16. <command:EventToCommand Command="{Binding CreateStateCommand}" PassEventArgsToCommand="True"/>
  17. </i:EventTrigger>
  18. </i:Interaction.Triggers>
  19.  
  20. <ItemsControl Canvas.Left="0"
  21. Canvas.Top="0"
  22. ItemsSource="{Binding Transitions}">
  23. <ItemsControl.ItemsPanel>
  24. <ItemsPanelTemplate>
  25. <Canvas IsItemsHost="True"/>
  26. </ItemsPanelTemplate>
  27. </ItemsControl.ItemsPanel>
  28. <ItemsControl.ItemContainerStyle>
  29. <Style TargetType="ContentPresenter">
  30. <Setter Property="Canvas.Left" Value="0" />
  31. <Setter Property="Canvas.Top" Value="0" />
  32. </Style>
  33. </ItemsControl.ItemContainerStyle>
  34. </ItemsControl>
  35.  
  36. <ItemsControl Canvas.Left="0"
  37. Canvas.Top="0"
  38. ItemsSource="{Binding States}">
  39. <ItemsControl.ItemsPanel>
  40. <ItemsPanelTemplate>
  41. <Canvas IsItemsHost="True"/>
  42. </ItemsPanelTemplate>
  43. </ItemsControl.ItemsPanel>
  44. <ItemsControl.ItemContainerStyle>
  45. <Style TargetType="ContentPresenter">
  46. <Setter Property="Canvas.Left" Value="0"/>
  47. <Setter Property="Canvas.Top" Value="0"/>
  48. </Style>
  49. </ItemsControl.ItemContainerStyle>
  50. </ItemsControl>
  51.  
  52. </Canvas>
  53.  
  54. <UserControl.Resources>
  55. <vm:StateViewModel x:Key="StateViewModel"/>
  56. </UserControl.Resources>
  57. <Grid x:Name="XMainGrid"
  58. DataContext="{StaticResource StateViewModel}">
  59. <Rectangle Fill="CornflowerBlue"
  60. RadiusX="5" RadiusY="5"
  61. ClipToBounds="True">
  62. </Rectangle>
  63. <StackPanel Orientation="Horizontal" Margin="10">
  64. <TextBox Text="{Binding Path=State.Name}"
  65. Background="Transparent"/>
  66. <Polygon Points="0,0 20,0 10,10"
  67. Fill="DarkSlateGray"
  68. Margin="10,5,0,0"/>
  69. </StackPanel>
  70. </Grid>
  71.  
  72.  
  73. <UserControl.Resources>
  74. <vm:TransitionViewModel x:Key="TransitionViewModel"/>
  75. </UserControl.Resources>
  76. <Canvas DataContext="{StaticResource TransitionViewModel}">
  77. <Line X1="{Binding SourceState.Position.X}"
  78. Y1="{Binding SourceState.Position.Y}"
  79. X2="{Binding TargetState.Position.X}"
  80. Y2="{Binding TargetState.Position.Y}"
  81. Stroke="DarkGreen"
  82. StrokeThickness="4"
  83. />
  84. </Canvas>
  85.  
  86. private ObservableCollection<StateViewModel> _states;
  87. public ObservableCollection<StateViewModel> States
  88. {
  89. get
  90. {
  91. if (_states == null)
  92. _states = new ObservableCollection<StateViewModel>();
  93.  
  94. return _states;
  95. }
  96. }
  97.  
  98. private ObservableCollection<TransitionViewModel> _transitions;
  99. public ObservableCollection<TransitionViewModel> Transitions
  100. {
  101. get
  102. {
  103. if (_transitions == null)
  104. _transitions = new ObservableCollection<TransitionViewModel>();
  105.  
  106. return _transitions;
  107. }
  108. }
  109.  
  110. private RelayCommand<MouseEventArgs> _createStateCommand;
  111. public ICommand CreateStateCommand
  112. {
  113. get
  114. {
  115. if (_createStateCommand == null)
  116. _createStateCommand = new RelayCommand<MouseEventArgs>(AddNewState);
  117.  
  118. return _createStateCommand;
  119. }
  120. }
  121.  
  122. private void AddNewState(MouseEventArgs e)
  123. {
  124. var newState = new StateViewModel();
  125. _states.Add(newState);
  126. OnPropertyChanged("States");
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement