この例では、 Canvas 要素の配置メソッドを使用して子コンテンツを配置する方法を示します。 この例では、 ListBoxItem のコンテンツを使用して配置値を表し、値を Double のインスタンスに変換します。これは、配置に必要な引数です。 その後、値は文字列に変換され、TextBlock メソッドを使用してGetLeft要素にテキストとして表示されます。
例
次の例では、11 個の選択可能なListBox要素を持つListBoxItem要素を作成します。
SelectionChanged イベントは、後続のコード ブロックが定義するChangeLeft
カスタム メソッドをトリガーします。
各ListBoxItemは、Double値を表します。これは、SetLeftの Canvas メソッドが受け入れる引数の 1 つです。 ListBoxItemを使用してDoubleのインスタンスを表すには、最初にListBoxItemを正しいデータ型に変換する必要があります。
<ListBox Grid.Column="1" Grid.Row="1" VerticalAlignment="Top" Width="60" Margin="10,0,0,0" SelectionChanged="ChangeLeft">
<ListBoxItem>Auto</ListBoxItem>
<ListBoxItem>10</ListBoxItem>
<ListBoxItem>20</ListBoxItem>
<ListBoxItem>30</ListBoxItem>
<ListBoxItem>40</ListBoxItem>
<ListBoxItem>50</ListBoxItem>
<ListBoxItem>60</ListBoxItem>
<ListBoxItem>70</ListBoxItem>
<ListBoxItem>80</ListBoxItem>
<ListBoxItem>90</ListBoxItem>
<ListBoxItem>100</ListBoxItem>
</ListBox>
ユーザーが ListBox の選択を変更すると、 ChangeLeft
カスタム メソッドが呼び出されます。 このメソッドはListBoxItemをLengthConverter オブジェクトに渡します。これにより、ContentのListBoxItemがDoubleのインスタンスに変換されます (この値は、String メソッドを使用して既にToStringに変換されていることに注意してください)。 この値は、SetLeft オブジェクトの位置を変更するために、GetLeftのCanvasおよびtext1
メソッドに戻されます。
private void ChangeLeft(object sender, SelectionChangedEventArgs args)
{
ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
LengthConverter myLengthConverter = new LengthConverter();
Double db1 = (Double)myLengthConverter.ConvertFromString(li.Content.ToString());
Canvas.SetLeft(text1, db1);
String st1 = (String)myLengthConverter.ConvertToString(Canvas.GetLeft(text1));
canvasLeft.Text = "Canvas.Left = " + st1;
}
Private Sub ChangeLeft(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)
Dim li As ListBoxItem = CType(CType(sender, ListBox).SelectedItem, ListBoxItem)
Dim myLengthConverter As New LengthConverter
Dim db1 As Double = CType(myLengthConverter.ConvertFromString(li.Content.ToString()), Double)
Canvas.SetLeft(text1, db1)
Dim st1 As String = CType(myLengthConverter.ConvertToString(Canvas.GetLeft(text1)), String)
canvasLeft.Text = "Canvas.Left = " + st1
End Sub
こちらも参照ください
.NET Desktop feedback