【问题标题】:WPF - Retrieve the object binded instead of a single property of the objectWPF - 检索绑定的对象而不是对象的单个属性
【发布时间】:2015-04-22 10:54:33
【问题描述】:

我在堆栈面板中有一个复选框和一个文本块。单击文本块时,应选中该复选框。实际上,它是一组复选框和一组文本块。需要检索值ID(这是复选框的“SomeClass”类的属性。但绑定到Textblock的是名称。我的问题是如何检索整个对象?

  <ListView>
     <GridView>
         <GridViewColumn>
               <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <ItemsControl ItemSource="{Binding SomeClass} ">
                              <ItemsControl.ItemTemplate>
                                  <DataTemplate>
                                    <StackPanel>

                                        <CheckBox...../>
                                        <TextBlock ...Text={Binding Name}/>

                                    </StackPanel>
                                  </DataTemplate>
                               </ItemsControl.ItemTemplate>
                           </ItemsControl>
                       </DataTemplate>
                    </GridViewColumn.CellTemplate>
             </GridViewColumn>                     
      </GridView>
    </ListView>

我正在使用 TextBlock 的 MouseLeftButton 事件。我可以检索名称,但我需要的是整个对象本身,以便我可以检索 ID 属性。有什么解决办法吗?

【问题讨论】:

  • 要获取当前的DataContext,这将是您的项目,在事件处理程序中执行类似(YourItemType)(((TextBlock)sender).DataContext)
  • 我不知道该怎么感谢你!谢谢一百万,是的,它有效!

标签: wpf checkbox binding textblock


【解决方案1】:

使用不带属性路径的 {Binding} 或 {Binding Path=.}

【讨论】:

  • 我忘了说 TextBlock 的 Text 属性显示 Name 是必须的。在这种情况下,必须使用 {Binding Name}。如果我是正确的,使用 {Binding Path= } 不会在 TextBlock 的 Text 属性中显示名称...ryt ?
  • 当然不是,但答案是基于检索整个对象。你在哪里需要整个对象?
  • 我在“TextBlock”上有一个“MouseDownEvent”。我需要有 SomeClass 的 ID 属性。这就是为什么我在考虑是否有办法访问该对象,以便我可以访问其中的 ID 属性。
  • 您应该可以在 TextBlock 的其他地方使用 {Binding Name} 作为文本和 {Binding Id}。 TextBlock 数据上下文设置为项目,因此您可以访问所需的任何属性。
猜你喜欢
  • 2012-07-08
  • 1970-01-01
  • 2020-04-01
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 2011-05-23
  • 1970-01-01
相关资源
最近更新 更多