c# - (MVVM/WPF) 在 View 模型中操作 View 元素

标签 c# wpf listview mvvm

我有一个 ListView 上面有一些我想像这样工作的图像:
enter image description here

我使用 命令 命令参数 发送 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/

相关文章:

wpf - 使用 MahApps.Metro 在标题栏中显示窗口图标?

c# - TextBlock 中的自定义文本换行算法

Android:从 ListView 一次播放一个媒体文件

c# - 如何获取泛型类的名称?

C# Facebook SDK 将 accesstoken 延长至 60 天

c# - Authorize.Net 创建新 WebHook 时出错

c# - 如何在 DataGrid WPF 中显示 SortedDictionary?

c# - 使用Linq XDocument读取XML文件的最后n个元素

listview - 我可以在不丢失触觉(触摸)反馈的情况下更改 ListView 单元格中的背景颜色吗?

c# - 正则表达式仅从字符串中获取数字