0

我在将文本框绑定到字符串时遇到问题(StringBuilder 也有同样的问题)。

这是xaml:

<ListBox x:Name="MyList" ItemsSource="{Binding ListOfBullets, Mode=TwoWay, Converter=StaticResourcedebugConverter}}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                            <local:TaskStepControl Text="{Binding  Mode=TwoWay}" AddHnadler="{Binding DelegateForHandlingAddTaskStep, ElementName=uc}"></local:TaskStepControl>                          
                    </DataTemplate>
                </ListBox.ItemTemplate>

ListBox 的项目是:

public ObservableCollection<StringBuilder> ListOfBullets{get{....} set{....}}

我也试过:

public ObservableCollection<string> ListOfBullets{get{....} set{....}}

如果我运行该应用程序,我会得到一个未停止的异常“参数不正确。”如果我删除 Mode=TwoWay 那么它可以工作,但正如预期的那样,编辑文本框不会更改 ListOfBullets 中的文本绑定对象;

我究竟做错了什么?

4

1 回答 1

1

MSDN 说您不能使用空属性路径进行双向绑定。

我猜绑定引擎只能对特定属性执行双向绑定,而不是对对象本身。

我对为什么不允许这样做的想法:

为简单起见,您可以认为 TwoWay 绑定的“写入”部分只是在数据源对象上设置提供的值。所以这个标记Text={Binding Name, Mode=TwoWay} 类似于 C# 代码:dataSource.Name = textBox.Text文本更新(当然,整个绑定工作流程要复杂得多,并且在幕后做其他事情,但现在这无关紧要)。

您的示例尝试执行类似的操作listItem = textBox.Text,但不会更新您的ListOfBullets的实际项目。请记住,我已经大大简化了绑定的工作方式,只是为了让您了解正在发生的事情。

你能做什么:

创建一个包装模型类,它将包含您的字符串值并绑定到

public ObservableCollection<Model> ListOfBullets {get; set;}

<local:TaskStepControl Text={Binding Value, Mode=TwoWay} />

于 2012-05-05T12:27:02.053 回答