gpt4 book ai didi

使用 DataTemplate 的 ListBox 的 WPF 双向绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 14:09:27 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
How to make ListBox editable when bound to a List<string>?



我正在尝试在名为“ListStr”对象的列表和 ListBox WPF 控件之间设置两个绑定(bind)。
此外,我希望这些项目是可编辑的,所以我添加了一个带有 TextBoxes 的 DataTemplate,希望它可以通过 TextBoxes 直接修改 ListStr 项目。

但是当我试图编辑其中一个时,它不起作用......

任何的想法 ?

PS:我已经尝试添加 Mode=TwoWay 参数,但它仍然无法正常工作

这是 XAML:
<ListBox ItemsSource="{Binding Path=ListStr}" Style="{DynamicResource ResourceKey=stlItemTextContentListBoxEdit}" />

这是样式代码:
<Style x:Key="stlItemTextContentListBoxEdit" TargetType="{x:Type ListBox}">
<Setter Property="Background" Value="#FF0F2592" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Height" Value="150" />
<Setter Property="Width" Value="200" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="ItemTemplate" Value="{DynamicResource ResourceKey=dtplItemTextContentListBoxEdit}" /></Style>

和数据模板:
<DataTemplate x:Key="dtplItemTextContentListBoxEdit">
<TextBox Text="{Binding Path=.}" Width="175" />
</DataTemplate>

最佳答案

使用 {Binding Path=.} 时,双向绑定(bind)不起作用(对于 {Binding} 来说很长)。记住正在发生的事情。
ListBox给定一个对象列表,然后创建一个 ListBoxItem对于每个项目。 DataContextListBoxItem然后设置为该对象。当您使用 {Binding} ,您是说只使用 DataContext 中的对象.当您在 TextBox 中键入内容时,它会更新什么?它无法设置 DataContext 并且不知道对象来自哪里(因此它无法更新您的列表/数组)。

两种方式绑定(bind)起作用的地方是当您绑定(bind)到该对象上的属性时。但不是当你绑定(bind)到对象本身时。

关于使用 DataTemplate 的 ListBox 的 WPF 双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com