将事件绑定到 属性 的备选方案
Alternatives for bind an event to a property
我有一个列表框,但如果我单击某个项目,我必须看到该项目的详细信息。我制作了这段代码,我尝试将 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#。
您可以让 SelectedItem 的绑定 属性
<ListBox ItemsSource="{Binding VillageList}" SelectedItem="{Binding SelectedVillage, Mode=TwoWay}" />
并在 setter
中完成工作
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.
}
}
}
我所做的(在 WPF 中)是将所选项目绑定到一个完整的 属性 然后在 set 部分引发事件。它看起来像这样;
private Village _SelectedVillage;
public Village SelectedVillage{
get {return _SelectedVillage;}
set {
_SelectedVillage = value;
RaiseEvent myEvent();
}
}
您还可以发出中继命令或检查 xaml 中的触发器。如果您使用 属性,请查看依赖项 属性 是否在 win 10 universal 中可用。
我有一个列表框,但如果我单击某个项目,我必须看到该项目的详细信息。我制作了这段代码,我尝试将 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#。
您可以让 SelectedItem 的绑定 属性
<ListBox ItemsSource="{Binding VillageList}" SelectedItem="{Binding SelectedVillage, Mode=TwoWay}" />
并在 setter
中完成工作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.
}
}
}
我所做的(在 WPF 中)是将所选项目绑定到一个完整的 属性 然后在 set 部分引发事件。它看起来像这样;
private Village _SelectedVillage;
public Village SelectedVillage{
get {return _SelectedVillage;}
set {
_SelectedVillage = value;
RaiseEvent myEvent();
}
}
您还可以发出中继命令或检查 xaml 中的触发器。如果您使用 属性,请查看依赖项 属性 是否在 win 10 universal 中可用。