gpt4 book ai didi

c# - WPF AutoCompleteBox 在 DataGridTemplateColumn 编辑问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:28 25 4
gpt4 key购买 nike

我正在尝试使用 AutoCompleteBox(在 WPFToolkit 中找到)而不是 DataGridTemplateColumn 中的纯文本框,但它似乎没有更新绑定(bind)源。

事实上,当我修改文本并按下回车键或在单元格外部单击时,文本会恢复为原始属性值。

这是一个重现问题的小型 WPF 应用程序(框架 4.0)
(它需要引用以下 wpf toolkit 程序集:
WPFToolkit.dll
System.Windows.Controls.Input.Toolkit.dll)

MainWindows.xaml:

<Window x:Class="WpfApplicationTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
Title="MainWindow" Height="350" Width="525"
x:Name="wnd">
<StackPanel>
<DataGrid ItemsSource="{Binding Path=Items, ElementName=wnd}"
AutoGenerateColumns="False">
<DataGrid.Columns>

<DataGridTextColumn Header="Item (textcolumn)" Binding="{Binding Name}" />

<DataGridTemplateColumn Header="Item (autocompletebox)" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<StackPanel>
<controls:AutoCompleteBox
Text="{Binding Name}"
ItemsSource="{Binding Path=Hints, Source={x:Reference wnd}}"
Populating="ACBox_Populating" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Window>

MainWindow.xaml.cs

public partial class MainWindow : Window
{
public class Item
{
public string Name { get; set; }
}

public MainWindow()
{
this.Hints = new ObservableCollection<string>();
this.Items = new Item[]{ new Item{ Name = "a" }, new Item{ Name = "b" }};
InitializeComponent();
}

public Item[] Items { get; set; }

public ObservableCollection<string> Hints { get; set; }

private void ACBox_Populating(object sender, PopulatingEventArgs e)
{
// generate 10 fake suggestions...
this.Hints.Clear();
for (int i = 0; i < 10; i++)
this.Hints.Add(e.Parameter + "_" + i);
}
}

有什么想法吗?

最佳答案

DataGrid 的默认绑定(bind)行为是 UpdateSourceTrigger=LostFocus,将其更改为 PropertyChanged。

         <controls:AutoCompleteBox 
Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
ItemsSource="{Binding Path=Hints, Source={x:Reference wnd}}"
Populating="ACBox_Populating" />

关于c# - WPF AutoCompleteBox 在 DataGridTemplateColumn 编辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20031695/

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