gpt4 book ai didi

mvvm-light - MVVM Light 工具包 Interaction.Triggers 在数据模板中不触发

转载 作者:行者123 更新时间:2023-12-03 07:04:58 30 4
gpt4 key购买 nike

我可以使用 Interaction.Triggers 捕获文本框上的 textchanged 事件,如下所示:

<TextBox  Text="{Binding Title}" Style="{StaticResource GridEditStyle}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<cmd:EventToCommand Command="{Binding TextChanged}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>

但是,当我在 ListView 单元模板的数据模板中使用它时,如下所示:

 <ListView  ItemsSource="{Binding LangaugeCollection}" SelectedItem="{Binding SelectedLangauge}" BorderThickness="0" FontFamily="Calibri" FontSize="11">
<ListView.View>
<GridView>
<GridViewColumn Width="200">
<GridViewColumn.CellTemplate>
<DataTemplate >
<Grid>
<TextBlock Text="{Binding Title}" Style="{StaticResource GridBlockStyle}">
</TextBlock>
<TextBox Text="{Binding Title}" Style="{StaticResource GridEditStyle}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="TextChanged">
<cmd:EventToCommand Command="{Binding TextChanged}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>

事件不会触发。

有谁知道为什么这不会触发以及如何修复它?

最佳答案

当您位于 DataTemplate 中时,DataContext 可能不是您所期望的。通常,DataTemplate 中的 DataContext 设置为 DataTemplate 表示的项目。如果您的 TextChanged 命令位于“主视图模型”而不是数据项上,则您需要更精确地指定数据绑定(bind),例如:

Command="{绑定(bind)源={StaticResource Locator},Path=Main.TextChanged}"

当您在 Studio 中以 Debug模式 (F5) 运行代码并观察“输出”窗口时,您可以看到问题。如果 DataContext 设置不正确,将显示数据错误。

干杯,洛朗

关于mvvm-light - MVVM Light 工具包 Interaction.Triggers 在数据模板中不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5300040/

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