【问题标题】:Binding label to selected listbox value将标签绑定到选定的列表框值
【发布时间】:2021-06-15 11:31:17
【问题描述】:

WPF 和绑定相对较新。我有一个充满值的列表框。当用户选择某个值时,我想在多个标签和一个文本框上显示该值的详细信息。填充我的列表框列表的当前 LINQ 查询获取整个表,因此数据位于该列表中。如何在标签内传递所选值的详细信息?

我当前的列表框代码是:

<ListBox x:Name="LBController" Grid.Column="1" HorizontalAlignment="Left" Grid.RowSpan="6" Grid.Row="1"
         ItemsSource ="{Binding AllControllers}" SelectedValue="{Binding SelectedControllerID}" 
         SelectedValuePath="Id" DisplayMemberPath="Name" >
</ListBox>

如果选择了列表框内的值,我希望它的名称显示在单独的标签上

<Label x:Name="lbl_controllername"
       Content="Controller Naam" HorizontalAlignment="Left" VerticalAlignment="Top"
       Grid.Row="1" Grid.Column="2" FontFamily="Corsiva" FontSize="11" Margin="40,0,0,0"/>

编辑:感谢大家的回答。但是,当使用具有其背后功能的控件执行相同操作时,这似乎确实很困难。

        <TextBox x:Name="txt_CodeDetail" 
                 TextWrapping="Wrap" 
                 AcceptsReturn="True"
                 FontFamily="Corsiva" 
                 FontSize="11"
                 Text="{Binding ControllerCode, Mode=TwoWay}"/>

例如,我有一个文本框,其中的文本被转换为应用程序执行功能的字符串。此字符串称为 ControllerCode。这是通过之前复制粘贴代码来完成的,但我希望文本框填充列表框中值中的选定属性。 我不能用

Text="{Binding SelectedItem.Property Elementname=LBController}" 

因为那样会摆脱 Controllercode 并破坏功能。如何将文本框文本绑定到选定项以及维护由控制器代码形成的字符串?

【问题讨论】:

  • Content="{Binding SelectedItem.Name, ElementName=LBController}" 应该可以工作。但是,您的视图模型中可能有一个“选定项”。

标签: c# wpf data-binding


【解决方案1】:

如果您需要在窗口的某个区域显示一个元素的多个属性,那么在该区域设置一个面板将数据上下文绑定到所选元素会更容易。
在这个面板中,设置一组元素来表示所选元素的属性。

例子:

<StackPanel DataContext="{Binding SelectedItem, ElementName=LBController}">
   <TextBlock Text="{Binding FirstProperty}"/>
   <TextBlock Text="{Binding SecondProperty}"/>

   <!--Other elements-->

</StackPanel>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-17
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    相关资源
    最近更新 更多