gpt4 book ai didi

wpf - 如何使用GridViewComboBoxColumn并允许用户进行编辑?

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

我需要提供一个WPF GridView,其中一列是Combobox,用户可以从列表中选择一个值或输入一个新值,因此我将IsComboBoxEditable设置为true,但是问题是如果用户键入的值不在当ItemsSource失去焦点时,文本为空白。

注意:我不希望在输入新值时将该值设为
已添加到Combobox中。我只需要在行中保存它的ItemsSource
限制了它。

我还需要DropDownOpened事件来填充它的ItemsSource。

这是我的代码:

<telerik:GridViewDataColumn Header="Description">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<telerik:RadComboBox IsEditable="True" ItemsSource="{Binding Descriptions}" Text="{Binding Description1,Mode=TwoWay}" DropDownOpened="descriptionRadComboBox_DropDownOpened"/>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
stringDescription1属性,而 string是在运行时填充的 Descriptions列表。(发生 string事件时)

最佳答案

就像您提到的,您的目标很简单,就是“可编辑组合框”。
(当然,您不想将新的Item添加到ItemsSource)

<telerik:GridViewDataColumn UniqueName="description1"  Header="Description">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description1}"></TextBlock>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<telerik:RadComboBox Name="SLStandardDescriptionsRadComboBox" IsEditable="True"
ItemsSource="{Binding DataContext.SLStandardDescriptions, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
DisplayMemberPath="SLStandardDescriptionTitle" DropDownOpened="Description_DropDownOpened">
</telerik:RadComboBox>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>

</telerik:GridViewDataColumn>

代码隐藏:
private void RadGridView_CellEditEnded(object sender, GridViewCellEditEndedEventArgs e)
{
if (e.Cell.Column.UniqueName == "description1")
{
RadComboBox combo = e.Cell.ChildrenOfType<RadComboBox>().FirstOrDefault();
if (combo != null)
{
List<Description> comboItems = combo.ItemsSource as List<Description>;

string textEntered = e.Cell.ChildrenOfType<RadComboBox>().First().Text;

bool result = comboItems.Contains(comboItems.Where(x => x.DescriptionTitle == textEntered).FirstOrDefault());
if (!result)
{
comboItems.Add(new Description { DescriptionTitle = textEntered });
combo.SelectedItem = new Description { DescriptionTitle = textEntered };
}
if (_viewModel.AccDocumentItem != null)
{
if (e.Cell.Column.UniqueName == "description1")
_viewModel.AccDocumentItem.Description1 = textEntered;
}
}
}
}

关于wpf - 如何使用GridViewComboBoxColumn并允许用户进行编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48960678/

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