列表框 itemtemplate 内的绑定问题

2023-12-24

我有两个单独的列表框绑定问题,其中的 itemtemplate 包含一个文本框。

1) 一个列表框绑定到一串字符串。如何在创建的文本框中显示每个字符串并同时允许两种方式绑定?如果不指定 Path 或 XPath,则不允许进行双向绑定。

<ListBox Height="231" HorizontalAlignment="Left" Margin="0,167,0,0" Name="listBoxKeys" VerticalAlignment="Top" Width="219" ItemsSource="{Binding Path=SelectedPlatform.Keys}" SelectedItem="{Binding Path=SelectedKey,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
         <ListBox.ItemTemplate>
              <DataTemplate>
                  <StackPanel Orientation="Horizontal" Margin="0,0,0,0">
                     <TextBox Text="{Binding Mode=OneWay}" Margin="0,0,0,0" Height="Auto" MinWidth="80" MaxWidth="80" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                   </StackPanel>
               </DataTemplate>
          </ListBox.ItemTemplate>
 </ListBox>

2)我使用另一个列表框,它绑定到自定义 KeyValuePair 类的一些通用列表。项目模板包含一个文本框和组合框。文本框文本绑定到每个 KeyValuePair 对象的 key 属性,组合框 selecteditem 绑定到 value 属性。我的问题是我希望组合由我的视图模型中声明的字符串列表填充,该列表将在运行时更改。窗口的数据上下文是声明列表的视图模型。我不知道需要用来绑定组合框项目源的确切语法。这是我的代码:

<ListBox Height="393" HorizontalAlignment="Left" Margin="0,72,0,0" Name="listBoxActions" VerticalAlignment="Top" Width="254" ItemsSource="{Binding Path=SelectedPlayer.ControlProfile.MappedActions}">
    <ListBox.ItemTemplate>
      <DataTemplate>
        <StackPanel Orientation="Horizontal" Margin="0,0,0,0">
          <TextBox Text="{Binding Key, Mode=TwoWay,UpdateSourceTrigger=LostFocus}" Margin="10,0,0,0" Height="Auto" MinWidth="80" MaxWidth="80" HorizontalAlignment="Left" VerticalAlignment="Center"/>
          <ComboBox Margin="10,0,0,0" Height="Auto" MinWidth="80" MaxWidth="80" HorizontalAlignment="Left" VerticalAlignment="Center" ItemsSource="{Binding ?}" SelectedItem="{Binding Value, Mode=TwoWay}"/>
         </StackPanel>
        </DataTemplate>
       </ListBox.ItemTemplate>
</ListBox>

问题在于源本身的双向绑定无法工作,因为这意味着当用户更改文本框中的文本时,必须替换为其创建数据模板的整个对象(字符串)。显然,这是行不通的。双向绑定仅适用于绑定对象的可写属性。

在您的情况下,我建议为列表框中的项目创建一个视图模型(基本上是字符串的视图模型),并在其上公开 Value 属性并在数据模板中绑定到它:

<ListBox Height="231" HorizontalAlignment="Left" Margin="0,167,0,0" 
         Name="listBoxKeys" VerticalAlignment="Top" Width="219" 
         ItemsSource="{Binding Path=SelectedPlatform.KeyViewModels}" 
         SelectedItem="{Binding Path=SelectedKey,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
        <ListBox.ItemTemplate>
             <DataTemplate>
                 <StackPanel Orientation="Horizontal" Margin="0,0,0,0">
                    <TextBox Text="{Binding Value, Mode=TwoWay}" Margin="0,0,0,0" Height="Auto" MinWidth="80" MaxWidth="80" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                  </StackPanel>
              </DataTemplate>
         </ListBox.ItemTemplate>
</ListBox>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列表框 itemtemplate 内的绑定问题 的相关文章

随机推荐

  • 在 Visual Studio 2010 中运行的 Windows Phone 8 SDK

    我知道这个 SDK 还没有完成 但是一些幸运的开发人员已经拿到了它 所以我的问题是 当您安装 Windows Phone 8 SDK 时 它是否也在 Visual Studio 2010 中安装了 SDK 或者只是在 Visual Stud
  • 在cuda中是否有更好/更干净/更优雅的malloc和free方式?

    我正在尝试 cudaMalloc 一堆设备指针 如果任何 malloc 不起作用 则优雅地退出 我有功能代码 但臃肿 因为如果失败 我必须 cudaFree 我之前 malloc 的所有内容 所以现在我想知道是否有更简洁的方法来实现这一点
  • 如何将 dtype='datetime64[ns]' 转换为浮点数?

    我正在练习线性回归 在这里我将日期作为输入 x 传递并期望输出 y float x df Date values x x reshape 1 1 y df MeanTemp values MeanTemp column has float
  • 在 C# 中转换为泛型类型失败

    我希望通过创建动态 GetControl 方法来节省一些编码 我的想法是这样的 private T GetControl
  • Rust:为关联类型实现特征“From”(错误)

    这是我之前问题的后续问题 Rust 从标准输入读取和映射行并处理不同的错误类型 https stackoverflow com questions 59187274 rust read and map lines from stdin an
  • CSS 类选择器通配符[重复]

    这个问题在这里已经有答案了 所以我想知道是否有办法在 CSS 中添加通配符 我有几个课程是 button 0 button 1 button 2 button 3等在一个button元素 我想得到所有 button 类来定义 是否可以做类似
  • 提取括号之间文本的模式

    如何从中提取字符串 and 使用模式匹配或任何东西 例如 如果文本是 你好 Java 那么如何只得到 Java 尝试这个 String x Hello Java Matcher m Pattern compile matcher x whi
  • 我可以使用客户端 Javascript 执行 DNS 查找(主机名到 IP 地址)吗?

    我想使用客户端 Javascript 来执行从客户端计算机看到的 DNS 查找 主机名到 IP 地址 那可能吗 Edit 这个问题让我很痒 所以我在 Google App Engine 上建立了一个 JSON Web 服务来返回客户端的 I
  • FFmpeg-Python 音频在最终视频中丢失

    我试图将视频放置在背景图像之上 但生成的输出视频没有音频 有什么办法可以让音频保持原样吗 def ConvertVideo source background start end dest stream ffmpeg input sourc
  • 奇怪的 while 语句行为?

    我不明白为什么以下陈述不起作用 randomKey random choice list topic keys randomValue random choice topic randomKey current len randomValu
  • 在一个 Android 应用程序中拥有多个 SQLiteOpenhelper

    我想知道是否可以在同一个 Android 应用程序中拥有多个 DbOpenHelper 但使用它们在同一个数据库中写入和读取 因为我试图从 2 个不同的 OpenHelper 具有不同的名称 创建表 但似乎只有第一个可以创建 当我尝试运行第
  • CKNotificationInfo soundName 不起作用

    Sbuscription 的创建如下 可以用 但是没有声音 为什么 医生说 if you specify the string default for this property the system plays the default a
  • 如何在Java中获取特定年份的所有星期日的日期?

    我正在认真寻找这段代码 我是新程序员 实际上我想让所有日期都带有标志 这些日期都是特定年份的星期日 请 我热切地等待您的回复 创建一个新日历 将时间设置为 1 1 yyyy 和某个时间 检查当前日期是否为星期日 然后向前滚动一天 直到星期日
  • 如何让 djangorestframework 使用格式后缀返回 xml?

    我可以让 djangorestframework 通过格式后缀 json 返回 json 但不能通过 xml 后缀返回 xml http 127 0 0 1 8000 chat rooms json id 1 timestamp 2013
  • memmem() STL 方式?

    是否有 STL 算法可用于像 memmem 一样搜索缓冲区内的字节序列 我不知道这是否是好的代码 但是以下代码可以使用std search http www cplusplus com reference algorithm search
  • Xcode 4.2 中的未知类型名称“命名空间”

    我正在编译QCAR SDK 但是当我向项目中添加更多框架后 它提示错误 Matrices h ifndef QCAR MATRIX H define QCAR MATRIX H namespace QCAR Matrix with 3 ro
  • PHP MP3 标签处理

    我有一个 php 脚本 我想提供其中的音乐列表 这些文件被命名为 01 mp3 02 mp3 和 03 mp3 等 他们都有标签信息 我的问题是如何在我的 php 脚本中访问它 您需要一个脚本来解析 mp3 文件以访问数据 来自谷歌 htt
  • 增量附加 numpy.arrays 到保存文件

    我已经尝试过 Hpaulji 概述的这种方法 但它似乎不起作用 如何在python中将多个numpy文件附加到一个numpy文件中 https stackoverflow com questions 42204368 how to appe
  • 在文本字段 Flutter 内部添加阴影

    我有这个设计 我想将其用于我的应用程序 但我不太确定如何添加框阴影 阴影位于文本字段的内部 请问有人可以给我一些帮助并为我指出如何执行此操作的正确方向吗 文本字段顶部的框阴影 干杯 杰克 您可以使用容器作为背景来实现这一点 例如使用线性 坡
  • 列表框 itemtemplate 内的绑定问题

    我有两个单独的列表框绑定问题 其中的 itemtemplate 包含一个文本框 1 一个列表框绑定到一串字符串 如何在创建的文本框中显示每个字符串并同时允许两种方式绑定 如果不指定 Path 或 XPath 则不允许进行双向绑定