【问题标题】:Bind Labels to selected item in WPF C#将标签绑定到 WPF C# 中的选定项目
【发布时间】:2018-01-23 22:33:45
【问题描述】:

我的问题可能已经得到解答,但我想看看是否可以根据自己的情况解决问题。

问题是我有一个包含汽车的 ListBox,如果您检查代码,您会发现其中有一个带有标签的 GridView,这些标签会获得第一项(第一辆车),但我希望它能够获得您在 ListBox 中选择。

正如我所说,可能已经有一个我还没有找到的答案,但我们将不胜感激!

<Window x:Class="WBS.MainWindow"
        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"
        xmlns:local="clr-namespace:WBS"
        mc:Ignorable="d" x:Name="mainWindow"
        Title="MainWindow" Height="353.2" Width="696.2">
    <Grid Margin="0,0,0,0" Background="#FFDFE4E3">
        <Button x:Name="btInfo" Content="Filter" HorizontalAlignment="Left" Margin="336,132,0,0" VerticalAlignment="Top" Width="75" Click="btInfo_Click"/>
        <Button x:Name="btEditCar" Content="Bewerk" HorizontalAlignment="Left" Margin="336,92,0,0" VerticalAlignment="Top" Width="75" Click="btEditCar_Click"/>
        <ListBox x:Name="lbCars" HorizontalAlignment="Left" Height="140" Margin="184,50,0,0" VerticalAlignment="Top" Width="142"/>
        <Button x:Name="btAddCar" Content="Voeg toe" HorizontalAlignment="Left" Margin="336,50,0,0" VerticalAlignment="Top" Width="75" Click="btAddCar_Click"/>
        <ListBox x:Name="lbFleets" HorizontalAlignment="Left" Height="140" Margin="10,50,0,0" VerticalAlignment="Top" Width="144" SelectionChanged="lbFleets_SelectionChanged"/>

        <Grid Margin="515,50,9.6,53.6" Name="grdCarOverview" Background="#FF91908F">
            <Label x:Name="lbBrand" Content="{Binding Path=[0].Brand}" HorizontalAlignment="Left" Margin="10,42,0,0" VerticalAlignment="Top" Height="27" Width="146" BorderBrush="#FFB3B3B3" BorderThickness="1"/>
            <Label x:Name="lbColor" Content="{Binding Path=[0].Color}" HorizontalAlignment="Left" Margin="10,74,0,0" VerticalAlignment="Top" Height="30" Width="146" BorderThickness="1" BorderBrush="#FFB3B3B3"/>
            <Label x:Name="lbConstructionYear" Content="{Binding Path=[0].ConstructionYear}" HorizontalAlignment="Left" Margin="10,112,0,0" VerticalAlignment="Top" Height="85" Width="146" FontSize="36" FontWeight="Bold" BorderBrush="#FFB3B3B3" BorderThickness="1"/>
            <Label Content="De eerste auto:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0"/>
        </Grid>
        <Label Content="Lijst met vloten:" HorizontalAlignment="Left" Margin="10,19,0,0" VerticalAlignment="Top" Width="110"/>
        <Label Content="Lijst auto's per vloot:" HorizontalAlignment="Left" Margin="184,19,0,0" VerticalAlignment="Top"/>
        <Button x:Name="btAddFleet" Content="Voeg toe" HorizontalAlignment="Left" Margin="36,206,0,0" VerticalAlignment="Top" Width="75" Click="btAddFleet_Click"/>
        <Button x:Name="btEditFleet" Content="Bewerk" HorizontalAlignment="Left" Margin="36,242,0,0" VerticalAlignment="Top" Width="75" Click="btEditFleet_Click"/>
        <Button x:Name="btRemoveCar" Content="Verwijder" HorizontalAlignment="Left" Margin="336,171,0,0" VerticalAlignment="Top" Width="75" Click="btRemoveCar_Click"/>
        <Button x:Name="btRemoveFleet" Content="Verwijder" HorizontalAlignment="Left" Margin="36,277,0,0" VerticalAlignment="Top" Width="75" Click="btRemoveFleet_Click"/>
    </Grid>
</Window>

CS:

public ObservableCollection<Car> Cars { get; set; }
public Car SelectedCar { get; set; }
public ObservableCollection<Fleet> Fleets { get; set; }

【问题讨论】:

    标签: c# binding listbox label


    【解决方案1】:

    您需要将绑定添加到您的ListBox 控件

        <ListBox x:Name="lbCars" 
                 ItemsSource="{Binding Cars }"
                 SelectedValue="{Binding SelectedCarId}" 
                 SelectedValuePath="Id" DisplayMemberPath="Name" 
                 HorizontalAlignment="Left" 
                 Height="140" Margin="184,50,0,0"
                 VerticalAlignment="Top" Width="142"/>
    

    在CS文件中,制作虚拟数据

     public ObservableCollection<Car> Cars = new ObservableCollection<Car>
     {
         new Car{Id = 0, Name = "Audi"},
         new Car{Id = 1, Name = "Honda"},
         new Car{Id = 2, Name = "Toyota"},
     };
    
     public int SelectedCarId { get; set; }
    

    SelectedCarId 将保存所选汽车的 ID。 lbFleets ListBox 也是如此。

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2013-09-07
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2011-01-20
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      相关资源
      最近更新 更多