1

我有一个列表框,但如果我单击一个项目,我必须看到该项目的详细信息。我已经编写了这段代码,我尝试将SelectionChanged事件绑定到一个属性,类型RelayCommand和模式是两种方式。

<ListBox Grid.Row="2" Grid.Column="0"  Grid.ColumnSpan="3" 
         SelectedItem="{Binding SelectedVillage, Mode=TwoWay}" 
         ItemContainerStyle="{StaticResource lstidflt}" 
         SelectionChanged="{Binding SelectedVillageChanged, Mode=TwoWay}"
         ItemTemplate="{StaticResource weatheritemdt}" 
         ItemsSource="{Binding VillageList}" />

这当然行不通,因为您不能将事件绑定到属性或将属性绑定到方法,反之亦然。您只能将属性绑定到属性。所以现在的问题是是否有其他方法可以将SelectionChanged事件绑定到属性?

我在具有 MVVM 轻架构的 Windows 通用 10 应用程序中使用 C#。

4

2 回答 2

1

你可以让 SelectedItem 属性的绑定

<ListBox ItemsSource="{Binding VillageList}" SelectedItem="{Binding SelectedVillage, Mode=TwoWay}" />

并在二传手中完成工作

public class VillageViewModel
{
    public ObservableCollection<Village> VillageList { get; set; } 

    private Village selectedItem;
    public Village SelectedItem
    {
        get { return selectedItem; }
        set
        {
            if (selectedItem == value)
                return;
            selectedItem = value;
            // Do logic on selection change.
        }
    }
}
于 2015-12-31T09:04:07.620 回答
1

我所做的(在 WPF 中)是将所选项目绑定到完整属性,然后在设置部分中引发事件。它看起来像这样;

private Village _SelectedVillage;
public Village SelectedVillage{
get {return _SelectedVillage;}
set {
    _SelectedVillage = value;
    RaiseEvent myEvent();
}
}

您还可以引发 relaycommand 或检查 xaml 中的触发器。如果您使用该属性,请查看依赖属性是否在 win 10 Universal 中可用。

于 2015-12-31T09:04:42.437 回答