• <legend id='esW9M'><style id='esW9M'><dir id='esW9M'><q id='esW9M'></q></dir></style></legend>
      <bdo id='esW9M'></bdo><ul id='esW9M'></ul>
      <i id='esW9M'><tr id='esW9M'><dt id='esW9M'><q id='esW9M'><span id='esW9M'><b id='esW9M'><form id='esW9M'><ins id='esW9M'></ins><ul id='esW9M'></ul><sub id='esW9M'></sub></form><legend id='esW9M'></legend><bdo id='esW9M'><pre id='esW9M'><center id='esW9M'></center></pre></bdo></b><th id='esW9M'></th></span></q></dt></tr></i><div id='esW9M'><tfoot id='esW9M'></tfoot><dl id='esW9M'><fieldset id='esW9M'></fieldset></dl></div>
      <tfoot id='esW9M'></tfoot>

      <small id='esW9M'></small><noframes id='esW9M'>

        如何绑定到与已指定的 ItemsSource 不同的 ListBox 内的源

        How to bind to a source inside a ListBox different from the ItemsSource already specified(如何绑定到与已指定的 ItemsSource 不同的 ListBox 内的源)
          <bdo id='R0E62'></bdo><ul id='R0E62'></ul>

        • <small id='R0E62'></small><noframes id='R0E62'>

        • <tfoot id='R0E62'></tfoot>
          <i id='R0E62'><tr id='R0E62'><dt id='R0E62'><q id='R0E62'><span id='R0E62'><b id='R0E62'><form id='R0E62'><ins id='R0E62'></ins><ul id='R0E62'></ul><sub id='R0E62'></sub></form><legend id='R0E62'></legend><bdo id='R0E62'><pre id='R0E62'><center id='R0E62'></center></pre></bdo></b><th id='R0E62'></th></span></q></dt></tr></i><div id='R0E62'><tfoot id='R0E62'></tfoot><dl id='R0E62'><fieldset id='R0E62'></fieldset></dl></div>

          1. <legend id='R0E62'><style id='R0E62'><dir id='R0E62'><q id='R0E62'></q></dir></style></legend>

                <tbody id='R0E62'></tbody>
                  本文介绍了如何绑定到与已指定的 ItemsSource 不同的 ListBox 内的源的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我在 HubSection 中有一个 ListBox,其项目绑定到通过后面的代码添加到我的 DefaulViewModel 的类玩家".首先,我简单地将一个 TextBox 绑定到我的类players"的属性PlayerName".现在我想添加一个组合框,其中包含一些不属于类播放器的项目.

                  I have a ListBox inside a HubSection, whose Items are bound to a class "players" added to my DefaulViewModel via code behind. First I simply put a TextBox bound to the property "PlayerName" of my class "players". Now I would like to add a ComboBox with some items that are NOT part of the class players.

                  有可能吗?我认为在 ComboBox 中定义 ItemsSource 会覆盖 ListBox 的 ItemsSource,但没有显示任何内容.

                  Is it possible ? I thought that definind an ItemsSource in the ComboBox would sort of override the ItemsSource of the ListBox, but nothing displays.

                  整个页面的DataContext定义如下:

                  The DataContext of the whole page is defined like so:

                  DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
                  

                  那么HubSection就是这样的:

                  Then the HubSection is like so:

                  <HubSection x:Name="HubSec1">
                          <DataTemplate>                    
                              <ListBox x:Name="ListBox1" ItemsSource="{Binding players}">
                                  <ListBox.ItemTemplate>
                                      <DataTemplate>
                                         <StackPanel>
                                              <TextBox Text="{Binding Path=PlayerName, Mode=TwoWay}"/>
                                              <ComboBox ItemsSource="{Binding Path=ListOfElements}"/>                                                                                                                                                             
                                          </StackPanel>
                                       </DataTemplate>
                                  </ListBox.ItemTemplate>
                              </ListBox>
                          </DataTemplate>
                  </HubSection>
                  

                  如果我以相同的方式定义 ComboBox 但在 ListBox 之外,它将正确显示ListOfElements"的字符串元素.但是在这个 ListBox 中,ComboBox 是空的.所以我的猜测是,已经为 ListBox 定义了 ItemsSource,不可能覆盖它.

                  If I define the ComboBox in the same way but outside the ListBox, it will display the string elements of "ListOfElements" properly. But in this ListBox, the ComboBox is empty. So my guess is that having defined an ItemsSource for the ListBox, it is not possible to override it.

                  我试图定义一个 DataTemplate 但没有成功,但这可能是一个很好的解决方案(我没有正确进行)

                  I have tried to define a DataTemplate but was not successful doing so, but it might be the good solution (and I did not proceed properly)

                  我错过了什么?

                  ComboBox 项是一个 ObservableCollection.它不是玩家"类的一部分.这是我如何将这些元素添加到 DefaultViewModel

                  Edit : The ComboBox items is an ObservableCollection. It is not part of the "players" class. Here is how I added these elements to the DefaultViewModel

                   DefaultViewModel.Add("players", players);
                   DefaultViewModel.Add("MyItemsList", ListOfElements);
                  

                  推荐答案

                  您可以向上走可视化树并绑定到祖先数据上下文:

                  You can walk up the visual tree and bind to an ancestors datacontext:

                  {Binding Path=PathToProperty, RelativeSource={RelativeSource AncestorType={x:Type typeOfAncestor}}}
                  

                  前:

                  {Binding Path=ListOfItems, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}
                  

                  这应该为您提供列表框具有的数据上下文,因此假设您的 ListOfItems 存在于该数据上下文中.

                  that should give you the datacontext that the listbox has, so assuming your ListOfItems exists in that data context.

                  或者你可以命名你的控件,然后通过元素名称绑定到它的数据上下文:

                  Or you can name your control, and then bind to its datacontext by element name:

                  {Binding ElementName=mySourceElement,Path=ListOfItems}
                  

                  这篇关于如何绑定到与已指定的 ItemsSource 不同的 ListBox 内的源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Populate ListBox with a IEnumrable on another thread (winforms)(在另一个线程(winforms)上使用 IEnumrable 填充 ListBox)
                  listbox selected item give me quot; System.Data.DataRowViewquot; , C# winforms(列表框选择的项目给我quot;System.Data.DataRowView, C# Winforms)
                  Cannot remove items from ListBox(无法从列表框中删除项目)
                  Preventing ListBox scrolling to top when updated(更新时防止列表框滚动到顶部)
                  Drag and drop from list to canvas on windows phone with MVVM(使用 MVVM 在 Windows 手机上从列表拖放到画布)
                  Deselection on a WPF listbox with extended selection mode(具有扩展选择模式的 WPF 列表框上的取消选择)
                    • <bdo id='E5JHG'></bdo><ul id='E5JHG'></ul>

                          • <tfoot id='E5JHG'></tfoot>
                              <tbody id='E5JHG'></tbody>

                            <i id='E5JHG'><tr id='E5JHG'><dt id='E5JHG'><q id='E5JHG'><span id='E5JHG'><b id='E5JHG'><form id='E5JHG'><ins id='E5JHG'></ins><ul id='E5JHG'></ul><sub id='E5JHG'></sub></form><legend id='E5JHG'></legend><bdo id='E5JHG'><pre id='E5JHG'><center id='E5JHG'></center></pre></bdo></b><th id='E5JHG'></th></span></q></dt></tr></i><div id='E5JHG'><tfoot id='E5JHG'></tfoot><dl id='E5JHG'><fieldset id='E5JHG'></fieldset></dl></div>

                            <small id='E5JHG'></small><noframes id='E5JHG'>

                          • <legend id='E5JHG'><style id='E5JHG'><dir id='E5JHG'><q id='E5JHG'></q></dir></style></legend>