Wpf控件ListBox使用实例2

2.Xaml绑定选择结果

<StackPanel Orientation="Vertical">
    <TextBlock Margin="10,10,10,10" FontWeight="Bold">  Pick a color from below list</TextBlock>
    <ListBox Name="mcListBox" Height="100" Width="100" Margin="10,10,0,0" HorizontalAlignment="Left" >
        <ListBoxItem>Orange</ListBoxItem>
        <ListBoxItem>Green</ListBoxItem>
        <ListBoxItem>Blue</ListBoxItem>
        <ListBoxItem>Gray</ListBoxItem>
        <ListBoxItem>LightGray</ListBoxItem>
        <ListBoxItem>Red</ListBoxItem>
    </ListBox>
    <TextBox Height="23" Name="textBox1" Width="120" Margin="10,10,0,0" HorizontalAlignment="Left"  >
        <TextBox.Text>
            <Binding ElementName="mcListBox" Path="SelectedItem.Content"/>
        </TextBox.Text>
    </TextBox>
    <Canvas Margin="10,10,0,0" Height="200" Width="200" HorizontalAlignment="Left">
        <Canvas.Background>
            <Binding ElementName="mcListBox" Path="SelectedItem.Content"/>
        </Canvas.Background>
    </Canvas>
</StackPanel>

3.绑定ListBox.Templete 模板内容

/// <summary>
/// List3.xaml 的交互逻辑
/// </summary>
public partial class List3 : Window
{
    public List3()
    {
        InitializeComponent();
        listBox.ItemsSource = new List<UserItem>() {
            new UserItem(1,"张三",true),
            new UserItem(2,"李四",false),
            new UserItem(3,"王五",false),
            new UserItem(4,"赵六",true)
        };
    }
    private void Button_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        Button btn = sender as Button;
        if (btn != null)
        {
            Image img = btn.FindName("img") as Image;
            if (img != null)
            {
                MessageBox.Show(img.Source.ToString());
            }
        }
    }
}
public class UserItem
{
    public UserItem(int ID, string Name, bool IsActive)
    {
        this.ID = ID;
        this.Name = Name;
        this.IsActive = IsActive;
    }
    public int ID { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
    public string BackGround
    {
        get {
            return this.IsActive
                ? "/images/1.jpg"
                : "/images/2.jpg";
        }
    }
}
View Code

Xaml定义

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="33*"/>
        <RowDefinition Height="236*"/>
    </Grid.RowDefinitions>

    <ListBox x:Name="listBox" Grid.Row="1" Margin="30">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Button MouseDoubleClick="Button_MouseDoubleClick">
                    <Grid>
                        <Image x:Name="img" Source="{Binding Path=BackGround}" Width="50" Height="30"></Image>
                        <TextBlock Text="{Binding Path=Name}" Margin="70 10" FontSize="18" Foreground="Red" FontWeight="Bold"></TextBlock>
                    </Grid>
                </Button>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

    <Label x:Name="label" Content="List模板绑定" HorizontalAlignment="Left" Margin="21,6,0,0" VerticalAlignment="Top"/>
</Grid>

显示结果:

原文地址:https://www.cnblogs.com/tianma3798/p/5755629.html