C # development Wpf/silverlight animation and games series Tutorials (Game Tutorial): (42) make exquisite mini map ②
The previous chapters include the Object Avatar Panel, mini radar maps and other forms are fixed position, in a variety of ways and simple, and RPG, SLG, leisure and other types of games are often used in a large number of suspension and can be freely drag the form, such as the package Panel, Weapon Equipment Panel, personal properties panel, Skills Panel, System Setup Panel, and so on, which requires us to tailor a generic and easy-to-use ChildWindow control to the game. So in this section I'll show you how to make a custom ChildWindow control with a high degree of freedom to drag the head, close the button, and the content body 3 large parts, and use it to implement the mini path map.
First of all, we need to determine the functional requirements of the ChildWindow, from the layout of the above 3, and these 3 parts can be implemented with any object, so as to achieve a high degree of expansion; functionally, ChildWindow can be dragged arbitrarily in the game window, and a number of ChildWindow instances there is also a coordinated hierarchical relationship, this aspect of the content you can refer to my another article on ChildWindow, from the overall structure, ChildWindow can be with the game with the object of easy interaction, It also does not affect the activities of other objects in the game.
Then go to the actual design phase, at which point we have 3 ways to choose:
1) through the underlying inheritance to achieve. For example, create a new BaseWindow.cs class file, and then let it inherit control or ContentControl or UserControl and so on, and add and layout the various parts by code, while implementing the functions of each part of the event, and finally let This.content = Total layout control or other way to complete the definition of the base class. Other controls can then extend the specific functionality of each individual control by inheriting the Basewindow and then having all the Basewindow functions. In general, this is a traditional solution, but it is not easy to use in wpf/silverlight, because there is a layer of XAML, and most developers do not necessarily have the underlying control development technology and experience, it is difficult to achieve.
2) through the Silverlight template control to implement. Many Silverlight developers abroad prefer to use this approach for control development. Concrete steps: Right-click on the project-> add-> New Item->silverlight templated control:
New good, you can see the project structure appeared in a themes folder, and inside the bread contains a template file called Generic.xaml, the main code is as follows:
<Style TargetType="local:QXChildWindow">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:QXChildWindow">
……模板内容……
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Later, if a new template is added to the project, the XAML portions of all the templates are appended to the file in such a format, except that they are bound in targettype different (CS files):