C# Can';在listview MVVM中选择EdItem时,不要更改Textblock中的数据绑定
我有个问题。在列表视图中选择项时无法更改数据绑定 这是我的代码xaml(视图):C# Can';在listview MVVM中选择EdItem时,不要更改Textblock中的数据绑定,c#,wpf,data-binding,C#,Wpf,Data Binding,我有个问题。在列表视图中选择项时无法更改数据绑定 这是我的代码xaml(视图): <ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding FCsource, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding FCsource, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<Border Margin="10" Width="440" Height="220" >
<Grid>
<TextBlock Text="{Binding Words, Mode = TwoWay}"></TextBlock>
</Grid>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
这是我在ViewModel中的代码:
<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="{Binding FCsource, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}">
<ListView.ItemTemplate>
<DataTemplate>
<Border Margin="10" Width="440" Height="220" >
<Grid>
<TextBlock Text="{Binding Words, Mode = TwoWay}"></TextBlock>
</Grid>
</Border>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
公共可观测收集(来源);
public observeCollection FCsource{get{return AddFlashCard();}set{FCsource=value;OnPropertyChanged();}
private Item _SelectedItem;
public Item SelectedItem { get=>_SelectedItem; set
{
_SelectedItem = value;
OnPropertyChanged();
if(_SelectedItem!=null)
{
SelectedItem.Words="hello"
}
}
}
public WordsViewModel()
{
}
private ObservableCollection<Item> AddFlashCard()
{
ObservableCollection<Item> listmn = new ObservableCollection<Item>();
listmn.Add(new Item("qwda");
listmn.Add(new Item("qwda");
listmn.Add(new Item("qwda");
return listmn;
}
private Item\u SelectedItem;
公共项SelectedItem{get=>_SelectedItem;set
{
_选择editem=值;
OnPropertyChanged();
如果(_SelectedItem!=null)
{
选择editem.Words=“你好”
}
}
}
public WordsViewModel()
{
}
私有ObservableCollection AddFlashCard()
{
ObservableCollection listmn=新的ObservableCollection();
增加(新项目(“qwda”);
增加(新项目(“qwda”);
增加(新项目(“qwda”);
返回列表mn;
}
通过对代码进行一些更改(您在其中有编译错误),它可以按预期工作。可以预见,如果在项
类上没有正确实现的INotifyPropertyChanged
接口,它将停止工作(特别是表示单词
属性的更改).这可能就是导致您出现问题的原因
以下是工作代码(此处使用PropertyChanged.Fody版本2.6.0
nuget软件包实现了INotifyPropertyChanged
):
[AddNotifyPropertyChangedInterface]
公共类WordsViewModel
{
公共可观测收集(来源);;
public observeCollection FCsource{get{return AddFlashCard();}set{FCsource=value;}}
私有词项_SelectedItem;
公共词项SelectedItem
{
获取=>\u选择编辑项;设置
{
_选择editem=值;
如果(_SelectedItem!=null)
{
选择editem.Words=“你好”;
}
}
}
public WordsViewModel()
{
}
私有ObservableCollection AddFlashCard()
{
ObservableCollection listmn=新的ObservableCollection();
添加(新单词项(“qwda”);
添加(新单词项(“qwda”);
添加(新单词项(“qwda”);
返回列表mn;
}
}
[AddInnotifyPropertyChangedInterface]
公共类WordItem
{
公共字符串{get;set;}
PublicWordItem(字符串字)
{
文字=文字;
}
}
如果您正确地实现了INotifyPropertyChanged,但它仍然不起作用,那么您确定已将视图模型分配给视图的DataContext吗?不清楚您想做什么,需要做什么failing@DenisSchaf我编辑问题again@DenisSchaf再看一遍这个问题。也许你能帮我。请。。“我不能更改数据绑定”这是什么意思?`你想做什么?@denischaf我想当我在listview中单击(所选项目)然后在listview中单击项目更改值数据绑定时,我再次补充这个问题,你应该再次阅读代码