问题与WPF DataTemplate中可编辑ComboBox的的SelectedItem(Prob

2019-08-04 03:45发布

我在与WPF以下问题ComboBox

XAML:

<Window.Resources>
  <ResourceDictionary>
    <DataTemplate DataType="{x:Type this:Data}">

      <ComboBox IsTextSearchEnabled="False" IsEditable="True" 
                Text="{Binding Value}" ItemsSource="{Binding Menu}"/>

    </DataTemplate>
  </ResourceDictionary>
</Window.Resources>

<StackPanel>
  <ContentControl Content="{Binding}"/>
  <Button Click="ChangeData_Click">Change Data</Button>
</StackPanel>

后面的代码:

public Window1()
{
    InitializeComponent();
    DataContext = new Data();
}

void ChangeData_Click(object sender, RoutedEventArgs e)
{
    DataContext = new Data();
}

我打开窗户,让ComboBox ,一定到我的数据模型,我选择了一些项目(如1),全都是花花公子。

我更改数据的上下文到一个新的数据模型 - 所选择的项目是(让我吃惊)1 ...如果我不希望任何选定的项目...

我怀疑它是与组合框搜索其禁用和编辑,但我不知道是什么问题。

我发现周围的工作:调用UpdateLayout()ContentControl一定到DataContext ,但它的丑陋。

那是WPF的bug? 这一切是我的错?

请帮忙

Answer 1:

我已经提交了同样的问题到MSDN WPF论坛 ,它似乎是一个微软的错误。 有一个解决办法,我发现,丑陋,但它的工作。 下面是背后的修改后的代码:

    public Window1()
    {
        InitializeComponent();
        DataContext = new Data();
        DataContextChanged += delegate { contentControl.UpdateLayout(); };
    }

    void ChangeData_Click(object sender, RoutedEventArgs e)
    {
        DataContext = null;
        DataContext = new Data();
    }

请注意这两个设置的DataContext为空,在DataContextChanged仅调用UpdateLayout请(),需要解决这个问题。



文章来源: Problem with SelectedItem of WPF Editable ComboBox with DataTemplate