将ComboBox的TwoWay绑定到.NET 4.5中的静态属性

时间:2012-07-13 15:11:44

标签: xaml data-binding combobox .net-4.5 two-way-binding

好吧,我刚刚发布了this个问题,但我认为我没有做错任何事。我的代码(以及所有答案的代码)是正确的,但我的开发机器运行.NET4.5,显然组合框的绑定有问题...

所以这里是一个新版本的问题:如何将组合框的SelectedItem双向绑定到.NET4.5中的静态属性?

以下代码段在.net4中工作,但在.NET4.5中不起作用。在4.5中,只是选定的值不会传播回我的静态属性。

我的ViewModel:

public class MainWindowViewModel
{
    public static List<String> MyElements { get; set; }
    public static string SelectedElement { get; set; }

    static MainWindowViewModel()
    {
        MyElements = new List<string>() {"a", "b", "c"};
        SelectedElement = "a";
    }
}

和我的XAML

<Window.Resources>
    <me:MainWindowViewModel x:Key="model"/>
</Window.Resources>

<StackPanel>
    <ComboBox
        ItemsSource="{Binding Source={x:Static me:MainWindowViewModel.MyElements}, Mode=OneWay}"
        SelectedItem="{Binding Source={StaticResource model}, Path=SelectedElement}" />
</StackPanel>

有没有人知道如何实现ComboBox的SelectedItem与.NET4.5中的静态属性的这种双向绑定?

1 个答案:

答案 0 :(得分:0)

请参阅Microsoft Connect上的my report。每个Selector控件都会被此问题感染。

最后,几周前,Microsoft发布了一个已经通过Windows Update分发的适当补丁。 see Knowledge Base KB2805222(WPF - 第7期)

  

WPF - 第7期:   假设您使用包含静态属性的绑定路径更改选择器属性(例如,SelectedItem属性)或ComboBox.Text属性。在这种情况下,绑定不会对更改做出反应。具体而言,新值不会写入数据项。