基本的な質問は申し訳ありませんが、Webを数日間検索していて、これらの質問に対する回答を見つけることはできません。VBコード内でのXAMLカスタムコントロールの名前とプロパティの参照
私はカスタムコントロールを作成しました。そのカスタムコントロールのインスタンスをxamlページに多数配置します。 VB Code BehindのCustom Controlで作業するには、どうしたらいいですか?
MouseLeftButtonDownイベントでクリックされたカスタムコントロールの名前(VBコード内)を参照するにはどうすればよいですか?たとえば、xamlに10個のカスタムコントロールがあり、それぞれが異なるx:名前(例:1-10)を持つ場合、特定のインスタンスがクリックされたときに、どのインスタンスがクリックされたかをどのように確認できますか?私は、e.OriginalSource.Name(コントロール内のコンポーネントを返す、コントロールのインスタンス名ではなく)を返すなど、多くのことを試しました。
私のカスタムコントロールは、多数の部品(長方形、線、テキストなど)で構成されています。これらのアイテムはそれぞれ自分のレイヤーの一部です。 VBコードでは、特定のコントロールを参照できるようになったら、そのコントロールの特定の部分を非表示にしたり、変更したりすることができます(線の非表示やテキストの変更など)。また、私はクリックされたコントロール以外のものを変更する必要があるので、クリックされたものだけでなく、すべてのコントロールのプロパティにアクセスできる必要があります。たとえば、コントロールインスタンスTest1をクリックすると、何らかの形でTest2、Test3、およびTest5も変更する必要があります。ここで
は、いくつかのテストコードは、私のコントロール2. MSのブレンドを使用してのSilverlightプロジェクトの一環として、Iを通じて一緒ですはるかに大きい、と私は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>
私のXAMLのApp::
<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
事前のおかげで、私はVBでこれを必要とするすべてのC#の専門家に申し訳ありません。