XAML:简单的 ItemsControl 绑定到 TextBox 不起作用:如何设置源 属性?
XAML: Simple ItemsControl Binding to TextBox does not work: how to set the source property?
我有一个试图绑定到文本框列表的 ObservableCollection。文本框显示但文本内容不显示。
XAML:
<Grid>
<Grid.RowDefinitions >
<RowDefinition />
</Grid.RowDefinitions>
<ItemsControl ItemsSource="{Binding Path=ListOfMessages}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Message, ElementName=ListOfMessages}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
代码:
在 ViewModel 中:
public ObservableCollection<ApplicationLog> ListOfMessages { get; set; }
模型中:
public class ApplicationLog
{
public string Code { get; set; }
public string Message { get; set; }
}
当我 运行 这个时,应用程序显示文本框(例如 4 个文本框,一个在另一个下方),但文本框中的文本(即 Message
属性) 未显示。我认为我的文本框绑定表达式是错误的。
上下文:我是 XAML 和 WPF 的新手。更一般地说:如何调试与此类似的绑定问题。
谢谢。
删除ElementName=ListOfMessages
。每个项目的 DataContext
将是绑定到 ItemsSource
的 ListOfMessages
中的项目。
<Grid>
<Grid.RowDefinitions >
<RowDefinition />
</Grid.RowDefinitions>
<ItemsControl ItemsSource="{Binding Path=ListOfMessages}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- DataContext will be ListOfMessages[0], [1], ..., [n] -->
<TextBox Text="{Binding Path=Message}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
ElementName
用于绕过 DataContext
并指向范围内的特定命名项目 XAML.
我有一个试图绑定到文本框列表的 ObservableCollection。文本框显示但文本内容不显示。
XAML:
<Grid>
<Grid.RowDefinitions >
<RowDefinition />
</Grid.RowDefinitions>
<ItemsControl ItemsSource="{Binding Path=ListOfMessages}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Message, ElementName=ListOfMessages}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
代码:
在 ViewModel 中:
public ObservableCollection<ApplicationLog> ListOfMessages { get; set; }
模型中:
public class ApplicationLog
{
public string Code { get; set; }
public string Message { get; set; }
}
当我 运行 这个时,应用程序显示文本框(例如 4 个文本框,一个在另一个下方),但文本框中的文本(即 Message
属性) 未显示。我认为我的文本框绑定表达式是错误的。
上下文:我是 XAML 和 WPF 的新手。更一般地说:如何调试与此类似的绑定问题。
谢谢。
删除ElementName=ListOfMessages
。每个项目的 DataContext
将是绑定到 ItemsSource
的 ListOfMessages
中的项目。
<Grid>
<Grid.RowDefinitions >
<RowDefinition />
</Grid.RowDefinitions>
<ItemsControl ItemsSource="{Binding Path=ListOfMessages}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- DataContext will be ListOfMessages[0], [1], ..., [n] -->
<TextBox Text="{Binding Path=Message}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
ElementName
用于绕过 DataContext
并指向范围内的特定命名项目 XAML.