【问题标题】:Bind textbox list inside listbox in wpf在wpf中的列表框内绑定文本框列表
【发布时间】:2014-06-03 23:05:54
【问题描述】:

我必须制作带有文本框的列表框...而且它必须是动态的。我在后面的代码中有可观察的集合,我想为列表框绑定它。我想要动态列表框,这个列表应该有可编辑的文本框。所以,基本上我想从列表框中绑定 multiplr 文本框。任何帮助将不胜感激

<ListBox HorizontalAlignment="Left" Name="ListTwo" Height="100" Margin="286.769,165.499,0,0" VerticalAlignment="Top" Width="100" ItemsSource="{Binding Source=obs}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBox Name="TextBoxList"></TextBox>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

通过这样做,我的文本框数量与可观察集合中的项目相同,但文本框的文本未设置。

【问题讨论】:

  • ObservableCollection 项目的类型是什么?还有什么是obs?是你的收藏吗?如果是,那么它是如何以及在哪里定义的?
  • ObservableCollection obs = new ObservableCollection();它的字符串类型....和它在 xaml.cs 中的绑定就像 ListTwo.ItemsSource = obs;
  • 然后尝试

标签: wpf data-binding textbox listbox dynamic-list


【解决方案1】:

如果您的ObservableCollection 中的项目只是简单的strings,那么您可以像这样将数据绑定到整个字符串值:

<ListBox Name="ListTwo" ItemsSource="{Binding Source=obs}" ... >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBox Name="TextBoxList" Text="{Binding}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

来自 MSDN 上的Binding.Path Property 页面:

(可选)句点 (.) 路径可用于绑定到当前源。例如,Text="{Binding}" 等价于 Text="{Binding Path=.}"

请注意,如果您在集合中有一些具有属性的对象,那么@nit 的答案将是正确的,因为您需要引用相关的属性名称:

<ListBox Name="ListTwo" ItemsSource="{Binding Source=obs}" ... >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBox Name="TextBoxList" Text="{Binding PropertyName}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

【讨论】:

  • 如果这个答案帮助你解决了你的问题,那么请按照本网站的惯例set it as 'Accepted'
【解决方案2】:

您必须将您的文本框绑定到您已绑定的可观察集合的类中的属性

<ListBox HorizontalAlignment="Left" Name="ListTwo" Height="100" Margin="286.769,165.499,0,0" VerticalAlignment="Top" Width="100" ItemsSource="{Binding Source=obs}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBox Binding="{Binding PROPERTYINCLASS}"></TextBox>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

【讨论】:

  • 我在 observable 集合中只有多个字符串。
  • 但这不会起到任何作用。如果您想要可编辑的文本框,那么您应该有一些数据属性支持它,以便数据中的更改应该反映到您的属性中......只需执行 将向您显示字符串,但不会起到任何作用
  • 我基本上想要的是这样的:我想允许 5 个 URL 存储在作为文本框组的列表框中。并允许用户编辑或删除它们。这个列表应该是动态的..如果用户有一个 url 它应该显示一个并且没有空文本框...我将用户喜欢的 url 存储在应用程序的设置文件中...所以,我在应用程序运行时从文件中加载这些 url
  • 这没有任何区别..您可以拥有public class UrlDataModel { public string UrlString{get;set;} } 类,并且您可以创建此类的集合并设置 UrlString 属性,如果 URL 存在于 UrlDataModel 的文件中.. 然后您可以绑定您的文本框为&lt;TextBox Binding="{Binding UrlString}"&gt;&lt;/TextBox&gt;
猜你喜欢
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 2010-11-16
  • 2015-12-03
相关资源
最近更新 更多