我在WPF ComboBox
中遇到以下问题:
<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错误吗?这都是我的错吗?
请帮助
答案 0 :(得分:0)
我已向MSDN WPF Forum提交了相同的问题,这似乎是微软的错误。 我找到了一个解决方法,丑陋,但它正在发挥作用。这是修改后的代码:
public Window1()
{
InitializeComponent();
DataContext = new Data();
DataContextChanged += delegate { contentControl.UpdateLayout(); };
}
void ChangeData_Click(object sender, RoutedEventArgs e)
{
DataContext = null;
DataContext = new Data();
}
请注意,需要将DataContext设置为null并在DataContextChanged上调用UpdateLayout()才能解决此问题。