微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight – 如何在Caliburn Micro中捕获组合框选择?

我刚刚从Caliburn Micro开始。我想有一个包含字符串列表的组合框,当用户选择一个项目时,我想要一些调用通知方法。应该很简单,对吧?我不耐烦,5分钟的谷歌没有为我解决,所以堆垛机的救援!

注意:我赞成一个答案,告诉我如何把它放在视图模型中。避免复杂的XAML是MVVM框架IMHO的全部要点。

解决方法

Caliburn.Micro已经在支持ItemsControl(例如ComboBox或ListBox)的控件中进行了规定,这些控件使您在所需的xaml中查看最小化。

首先,您有一个标准约定,其中控件内容将绑定到具有与控件相同名称viewmodel属性。在ItemsControl的情况下,controls的content属性是ItemsControl.ItemsSource。而与Caliburn.Micro开发的第二个惯例是试图将ItemsControl.SelectedItem绑定到具有控件的单个名称viewmodel属性,其中“Active”,“Selected”或“当前“(参见Caliburn.Micro来源的ConventionManager)。

这一点,您可以在您的视图中实现您想要的以下内容

<ComboBox x:Name="Strings"></ComboBox>

并在您的viewmodel中:

public BindableCollection<string> Strings
{
    get
    { 
        // silly example of the collection to bind to
        return new BindableCollection<string>(
                         new string[]{ "one","two","three"});               
    }
}

private string _selectedString;
public string SelectedString
{
    get { return _selectedString; }
    set
    {
        _selectedString= value;
        NotifyOfPropertyChange(() => SelectedString);
        // and do anything else required on selection changed
    }
}

一个约定会获取控件名称(“Strings”),并将ComboBox.ItemsSource绑定到viewmodel属性字符串。第二个约定首先将“Strings”单数化为“String”,并添加“Selected”以获取属性“SelectedString”将ComboBox.SelectedItem绑定到。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐