0

リストビューにテキストボックスとボタンを動的に作成しようとしていますが、正常に機能します。次にiamが試みているのは、動的に作成されたテキストボックスにテキストを表示し、button_clickイベントのボタンのコンテンツとして表示することです。混乱していて、動的に作成されたボタンまたはコードビハインドのテキストにアクセスする方法がわかりません。 「nameproperty」は同じものには無効です。

どんな提案も歓迎します......

XAML

<ListView Height="222" HorizontalAlignment="Left" Margin="341,24,0,0" Name="listView1" VerticalAlignment="Top" Width="290" Background="Green" 
              AllowDrop="True" 
              DragDrop.Drop="listview_drop" 
              DragDrop.DragEnter="treeview_dragenter" ItemsSource="{Binding XPath=self::*}"></pre>
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" x:Name="stc">
                    <TextBlock Text="{Binding Path=Name}" Margin="0,0,3,0"/>
                    <ComboBox Margin="0,0,3,0" x:Name="cbox1">
                        <ComboBoxItem Content="Less Than"/>
                        <ComboBoxItem Content="Greater Than"/>
                        <ComboBoxItem Content="Equals"/>
                    </ComboBox>
                    <TextBox Margin="0,0,3,0" Width="50" x:Name="textbox1" />
                    <Button x:Name="but1" Height="25" Width="35" Click="click" Content="gen" />
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

コード

private void click(object sender, RoutedEventArgs e)
{
    //Don`t know what do do here           
}
4

2 に答える 2

1

FindNameメソッドを使用して名前付きTextBoxを取得できます。

private void click(object sender, RoutedEventArgs e)
{
    var button = sender as Button;
    var parent = button.Parent as FrameworkElement;
    var textBox = parent.FindName("textbox1") as TextBox;
    button.Content = textBox.Text;
}
于 2013-02-15T10:17:56.970 に答える
0

クリックイベントハンドラーでは、senderパラメーターButtonはクリックされたものになります。したがって、にキャストするとButton、ボタンオブジェクトを操作できます。

しかし、それはあなたにボタンを与えるだけです。次にButton'sを取得すると、ボタンがDataContext含まれているオブジェクトが作成されて表示されます。DataTemplate

DataContext通常、この時点で、データバインディングを介してテンプレート内のテキストをオブジェクトに関連付けていたので、DataContextオブジェクトを適切に操作するだけで、UIが自動的に更新されます。

それを行っていない場合は、そこからButtonWPFビジュアルツリーに移動して、テンプレート内の他のコントロールを探し始めることができますが、それは可能ですが、データバインディングを使用できる場合は、通常、その価値よりも面倒です。

于 2013-02-15T10:19:03.580 に答える