代码之家  ›  专栏  ›  技术社区  ›  Maciek

从列表框的模板中的按钮修改列表框的项?

  •  1
  • Maciek  · 技术社区  · 15 年前

    在我的silverlight3项目中,我使用一个ListBox从wcfwebservice显示Get()操作的结果。

    <ListBox x:Name="m_listview" ItemsSource="{Binding Users, Mode=TwoWay, UpdateSourceTrigger=Default}" Foreground="{StaticResource EnergyBlue}" Background="{StaticResource EnergyBackground}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Center" Grid.ColumnSpan="3" Margin="0,0,0,2" IsSynchronizedWithCurrentItem="False">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <Grid MinWidth="536" MinHeight="10" d:DesignWidth="19.875" d:DesignHeight="20.75">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="0.2*"/>
                                <ColumnDefinition Width="0.2*"/>
                                <ColumnDefinition Width="0.2*"/>
                                <ColumnDefinition Width="0.2*"/>
                                <ColumnDefinition Width="0.2*"/>
                            </Grid.ColumnDefinitions>
                            <TextBox Text="{Binding Path=UserName, Mode=TwoWay, UpdateSourceTrigger=Default}" Grid.Column="0" Foreground="{StaticResource EnergyWhite}" Margin="2" Background="{StaticResource EnergyBackground}" BorderBrush="{StaticResource EnergyBlue}" SelectionBackground="{StaticResource EnergyBlue}" SelectionForeground="{StaticResource EnergyWhite}" MinWidth="100"/>
                            <PasswordBox Password="{Binding Path=UserPass, Mode=TwoWay, UpdateSourceTrigger=Default}" Grid.Column="1" Foreground="{StaticResource EnergyWhite}" Margin="2" Background="{StaticResource EnergyBackground}" BorderBrush="{StaticResource EnergyBlue}" SelectionBackground="{StaticResource EnergyBlue}" SelectionForeground="{StaticResource EnergyWhite}" MinWidth="100"/>
                            <TextBox Text="{Binding Path=UserTypeId, Mode=TwoWay, UpdateSourceTrigger=Default}" Grid.Column="2" Foreground="{StaticResource EnergyWhite}" Margin="2" Background="{StaticResource EnergyBackground}" BorderBrush="{StaticResource EnergyBlue}" SelectionBackground="{StaticResource EnergyBlue}" SelectionForeground="{StaticResource EnergyWhite}" MinWidth="100"/>
                            <Button Style="{StaticResource EnergyGlassButton}" Grid.Column="3" MinWidth="10" MinHeight="10" Content="Update" Click="OnUpdateUser"/>
                            <Button Style="{StaticResource EnergyGlassButton}" Grid.Column="4" MinWidth="10" MinHeight="10" Content="Remove" Click="OnRemoveUser"/>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
    

    模板包含2个按钮。当我单击其中一个时,我想获得对listboxitem下确切数据项的引用。我该怎么做?我试过:

    User target_user = m_listview.SelectedItem as User;
    

    1 回复  |  直到 15 年前
        1
  •  2
  •   AnthonyWJones    15 年前

    我认为以下内容应能检索到您所需的物品:-

    void OnUpdateUser(object sender, RoutedEventArgs e)
    {    
      object item = ((Button)sender).DataContext;
      // do stuff with item
    }