我有一个 ListView 上面有一些我想像这样工作的图像:
我使用 命令 和 命令参数 发送 ListView 给我的查看-型号 然后操纵每个图像的宽度和高度:
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding MVM.SelectedChangedCommand}" CommandParameter="{Binding ElementName=listView}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
查看型号:
private void SelectedChangedAction(object param)
{
ListView s = (ListView)param;
double j = 1;
for (int i = s.SelectedIndex - 1; i >= 0 && j >= 0; i--, j -= 0.15)
{
Pic t = (Pic)s.Items[i];
t.Width = 150 * j;
t.Height = 250 * j;
}
j = 1;
for (int i = s.SelectedIndex + 1; i < s.Items.Count && j >= 0; i++, j -= 0.15)
{
Pic t = (Pic)s.Items[i];
t.Width = 150 * j;
t.Height = 250 * j;
}
s.ScrollIntoView(s.Items[s.SelectedIndex]);
}
但正如我所说,您可以在 中看到查看-型号 , 我用 ListView 在 虚拟机 我认为这是违规行为!那么我怎样才能在 中做这样的事情呢? MVVM ?
(当然,我认为我可以构建一个基于 ListView 的新 Controller ,虽然我需要一个简单的解决方案,如 XAML 或其他东西)
最佳答案
在 ViewModel 中为 SelectedItem 创建一个属性。将其绑定(bind)在 View 的 ListView 中。使用转换器设置绑定(bind)高度和宽度,并将所有逻辑移到那里。
关于c# - (MVVM/WPF) 在 View 模型中操作 View 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40564064/