Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 所选项目的WPF触发器_C#_Wpf_Xaml_Mvvm_Listbox - Fatal编程技术网

C# 所选项目的WPF触发器

C# 所选项目的WPF触发器,c#,wpf,xaml,mvvm,listbox,C#,Wpf,Xaml,Mvvm,Listbox,我使用的是MVVM轻型框架。在我的一个页面上,我有一个列表框,其中有一个绑定列表和一个绑定的选定项。我有一个样式可以突出显示该列表框中的选定项。但是,在我实际单击该项之前,该项不会高亮显示(当它刚刚绑定时,它不会高亮显示该项) XAML: 正在发送的消息并不重要,它在另一个页面上执行一些其他工作。SelectedDefault属性是本例中唯一使用的内容 有人知道我需要做什么才能让它工作吗?看起来绑定(以及您的视图)不知道所选项目属性已更改 在SelectedDefault的setter中,需要使

我使用的是MVVM轻型框架。在我的一个页面上,我有一个列表框,其中有一个绑定列表和一个绑定的选定项。我有一个样式可以突出显示该列表框中的选定项。但是,在我实际单击该项之前,该项不会高亮显示(当它刚刚绑定时,它不会高亮显示该项)

XAML:

正在发送的消息并不重要,它在另一个页面上执行一些其他工作。SelectedDefault属性是本例中唯一使用的内容

有人知道我需要做什么才能让它工作吗?

看起来绑定(以及您的视图)不知道所选项目属性已更改

在SelectedDefault的setter中,需要使用INotifyPropertyChanged接口创建某种通知

我只是快速浏览了一下MVVM light框架,根据示例判断,如果您的viewmodel继承自ViewModelBase,请使用字段备份属性并调用RaisePropertyChanged:



    private QuotePetSummaryItem _selectedDefault;
    public QuotePetSummaryItem SelectedDefault
    {
        get { return _selectedDefault; }
        set
        {
            _selectedDefault = value;
            RaisePropertyChanged("SelectedDefault");
        }
    }


首先,您必须将selecteditem的绑定模式设置为双向

<ListBox ItemsSource="{Binding DefaultList}" SelectedItem="{Binding SelectedDefault, Mode=TwoWay}" Background="{x:Null}" ItemContainerStyle="{StaticResource ListboxItemStyle}"> 

第二,在viewmodel中,必须实现INotifyPropertyChanged并正确提升它。看看岩石计数器的答案


如果所有这些都不起作用,请检查vs输出窗口中的绑定错误。

在行
SelectedDefault=DefaultList.First()上放置一个断点。它被击中了吗?请为
SelectedDefault
发布代码。


    private QuotePetSummaryItem _selectedDefault;
    public QuotePetSummaryItem SelectedDefault
    {
        get { return _selectedDefault; }
        set
        {
            _selectedDefault = value;
            RaisePropertyChanged("SelectedDefault");
        }
    }

<ListBox ItemsSource="{Binding DefaultList}" SelectedItem="{Binding SelectedDefault, Mode=TwoWay}" Background="{x:Null}" ItemContainerStyle="{StaticResource ListboxItemStyle}">