gpt4 book ai didi

wpf - 带有 DataTemplate 的 WPF 可编辑组合框的 SelectedItem 问题

转载 作者:行者123 更新时间:2023-12-05 01:19:34 25 4
gpt4 key购买 nike

我在使用 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绑定(bind)到 DataContext ,但很丑。

那是WPF错误吗?都是我的错吗?

请帮忙

最佳答案

我已经向 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() 才能解决此问题。

关于wpf - 带有 DataTemplate 的 WPF 可编辑组合框的 SelectedItem 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1389040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com