Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
WPF组合框未在选择时触发_Wpf_Mvvm_Binding - Fatal编程技术网

WPF组合框未在选择时触发

WPF组合框未在选择时触发,wpf,mvvm,binding,Wpf,Mvvm,Binding,我有一个组合框,如下所示。为什么幕后的代码不总是被激活 XAML: 代码隐藏: 创建私有字符串; 创建公共字符串{ 得到{ //.... 返回cbAppendCreate } 设置{//当选择两项中的第一项时,此选项不会触发, //但在选择两项中的第二项时始终激发 //.... 创造价值; } } 我将在这里发布我的工作代码,非常简单。我刚刚使用VS2012模板创建了一个默认WPF应用程序。以下是MainWindow.xaml内容: <Window x:Class=" WpfA

我有一个组合框,如下所示。为什么幕后的代码不总是被激活

XAML:


代码隐藏:

创建私有字符串;
创建公共字符串{
得到{
//....
返回cbAppendCreate
}
设置{//当选择两项中的第一项时,此选项不会触发,
//但在选择两项中的第二项时始终激发
//....
创造价值;
}
}

我将在这里发布我的工作代码,非常简单。我刚刚使用VS2012模板创建了一个默认WPF应用程序。以下是MainWindow.xaml内容:

<Window x:Class="
    WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<StackPanel>
    <ComboBox   Height="23"
                    Name="cbAppendCreate"
                    VerticalAlignment="Top"
                    Width="120"
                    ItemsSource="{Binding Path=CbCreateAppendItems}"
                    SelectedValue="{Binding Path=CbAppendCreate,UpdateSourceTrigger=PropertyChanged}" />
    <TextBlock Text="{Binding CbAppendCreate}"></TextBlock>
</StackPanel>

下面是隐藏的代码:

namespace WpfApplication1
    {
    public class DataSource
    {
        public List<string> CbCreateAppendItems { get; set; }
        public string CbAppendCreate { get; set; }
        public DataSource()
        {
            CbCreateAppendItems = new List<string>() { "create", "append" };
        }
    }
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new DataSource();
        }
    }
}
命名空间WpfApplication1
{
公共类数据源
{
公共列表CbCreateAppendItems{get;set;}
公共字符串CbAppendCreate{get;set;}
公共数据源()
{
CbCreateAppendItems=new List(){“create”,“append”};
}
}
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
DataContext=新数据源();
}
}
}

当我在组合框中选择不同的值时,TextBlock将更新为相同的值,因此VM的属性也将更新。

输出窗口中的任何绑定错误?无法在我的简单设置中重现。发布更多代码,或者我可以发布我的代码,如果你愿意的话。@Haspemulator我也很乐意发送我的项目。我想看看它,如果它与我上面发布的代码不同的话。我正在关注MVVM。我之所以接受它,是因为它是有效的,并且我创建了一个可以在每个选择上激发的工作示例,但是我的问题仍然存在于原始的。setter不会触发组合框值的任何更改。我不知道臭虫在哪里。