gpt4 book ai didi

wpf - 在列表框项目模板内部绑定(bind)问题

转载 作者:行者123 更新时间:2023-12-01 11:06:46 34 4
gpt4 key购买 nike

我有两个单独的列表框绑定(bind)问题,其中一个项目模板包含一个文本框。

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

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

<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>

最佳答案

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

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

<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>

关于wpf - 在列表框项目模板内部绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4885757/

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