我想显示双重对象的集合。
以下代码正常运行:
namespace WpfApplication4
{
public partial class MainWindow : Window
{
public ObservableCollection<double> collection1 { get; set; }
public MainWindow()
{
InitializeComponent();
collection1=new ObservableCollection<double>();
for (double d = 0.0; d < 1.0; d += 0.1)
{
nm.wartosci.Add(d);
}
DataContext=this;
}
}
XAML文件:
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ListView ItemsSource="{Binding wartosci}" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
</Window>
但是如果我想以不同的方式显示对象呢?当我将DataTemplate添加到ListView时,它看起来如下所示:
<ListView ItemsSource="{Binding wartosci}" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Visual Studio返回异常:
XamlParseException未处理 双向绑定需要Path或XPath。
我想我应该写一些内容{Binding}
,但它是什么?
答案 0 :(得分:1)
试试这个:
<ListView.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=.}"/>
</DataTemplate>
</ListView.ItemTemplate>
答案 1 :(得分:1)
编辑: 我对此有了更多的考虑,实际上它无法正常工作。 您尝试做的事实上与尝试为参数分配新值实际上是一回事。这就是为什么TwoWay绑定无法工作的原因。
这样做的一种方法是在你的双人身边放一个包装。因此,包装器对象不会更改,但您可以访问并更改包装器内的double值。
WrapperClass:
public class WrapClass
{
public double Value { get; set; }
}
...
public ObservableCollection<WrapClass> Collection1 { get; set; }
您的XAML:
<ListView.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Value }"/>
</DataTemplate>
</ListView.ItemTemplate>
我希望这会有所帮助