Извините за основные вопросы, но я искал в Интернете несколько дней и не могу найти ответ на эти вопросы.
Я создал пользовательский элемент управления и буду размещать большое количество экземпляров этого пользовательского элемента управления на своей странице xaml. При работе с этим пользовательским элементом управления в коде VB, как мне сделать следующее?
Как мне сослаться на имя пользовательского элемента управления (в моем VB-коде), по которому щелкнуло событие MouseLeftButtonDown? Например, если у меня есть 10 экземпляров моего пользовательского элемента управления в xaml, каждый с различным x: name (скажем, 1-10), при нажатии на конкретный экземпляр, как я могу увидеть, какой из них был нажат? Я пробовал несколько вещей, включая e.OriginalSource.Name (который возвращает компонент внутри элемента управления, по которому был выполнен щелчок, а не имя экземпляра элемента управления).
Мой пользовательский элемент управления состоит из множества частей и элементов (прямоугольников, линий, текста и т. Д.). Каждый из этих предметов является частью моего слоя. В коде VB, когда я могу ссылаться на конкретный элемент управления, как я могу скрыть или изменить определенные части этого элемента управления (например, скрытие строки и изменение текста). Кроме того, мне нужно изменить не только элемент управления, по которому был выполнен щелчок, поэтому я должен иметь возможность доступа к свойствам всех элементов управления, а не только к тому, что было нажато. Например, если я щелкаю по экземпляру Control Test1, мне также необходимо каким-то образом изменить Test2, Test3 и Test5.
Вот некоторый тестовый код, который я выполняю вместе в рамках проекта Silverlight с использованием MS Blend 2. Мой элемент управления намного больше, и мне нужно 200 - 250 экземпляров / копий этого пользовательского элемента управления, поэтому мне действительно нужно знать, какой элемент управления нажата копия / копия.
Мой пользовательский контроль:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="MyControl1"
x:Name="UserControl"
d:DesignWidth="60" d:DesignHeight="59">
<Grid x:Name="LayoutRoot" MouseLeftButtonDown="OnMouseClick">
<Rectangle x:Name="Rectangle1" Fill="#FFFFFFFF" Stroke="#FF000000"/>
<TextBox Background="{x:Null}" x:Name="TextBox1" Text="Test" TextWrapping="Wrap"/>
<Ellipse x:Name="Circle1" Fill="{x:Null}" Stroke="#FF000000"/>
<Path Margin="1,29,0,29" x:Name="Line1" Fill="{x:Null}" Stretch="Fill" Stroke="#FF000000" Data="M74,80 L132,80"/>
<Path Margin="0,0,1,14" x:Name="Line2" VerticalAlignment="Bottom" Height="1" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" Data="M73,95 L131,95"/>
<Path Margin="0,0,0,4" x:Name="Line3" VerticalAlignment="Bottom" Height="1" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" Data="M73,105 L132,105"/>
</Grid>
</UserControl>
Приложение My xaml, использующее пользовательский элемент управления:
<Grid x:Name="LayoutRoot">
<Tester:MyControl1 HorizontalAlignment="Left" Margin="56,54,0,0" VerticalAlignment="Top" Width="60" Height="60" x:Name="Test1"/>
<Tester:MyControl1 HorizontalAlignment="Left" Margin="116,54,0,0" VerticalAlignment="Top" Width="60" Height="60" x:Name="Test2"/>
<Tester:MyControl1 HorizontalAlignment="Left" Margin="176,54,0,0" VerticalAlignment="Top" Width="60" Height="60" x:Name="Test3"/>
<Tester:MyControl1 HorizontalAlignment="Left" Margin="236,54,0,0" VerticalAlignment="Top" Width="60" Height="60" x:Name="Test4"/>
<Tester:MyControl1 HorizontalAlignment="Left" Margin="296,54,0,0" VerticalAlignment="Top" Width="60" Height="60" x:Name="Test5"/>
</Grid>
Код пользовательского контроля VB:
Partial Public Class MyControl1
Public Sub New()
MyBase.New()
Me.InitializeComponent()
' Insert code required on object creation below this point.
End Sub
Private Sub OnMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
Dim int_Temp As Integer
Dim str_InstanceName As String
str_InstanceName = "1.What code here tells me the name of the instance which was checked? Test1, Test2, etc. for example."
int_Temp = MessageBox.Show(str_InstanceName, "Testing", MessageBoxButton.OK)
'2.What code here lets me manipulate parts of my control instances (and not just the instance which was clicked)?
'I want to hide Test1.Line1 and Test2.Line3 and Test3.Circle1 and change the background of Test5.Rectangle1 for example.
End Sub
End Class
Заранее спасибо, и извините всех экспертов C #, что мне это нужно в VB.