【发布时间】:2021-06-28 06:31:14
【问题描述】:
我想为每一行创建一个带有特定选项的 ComboBoxColumn
例如
列表字符串
public List<string> Types
{
get
{
if (PropertyType == typeof(bool))
{
return FilterCharacters.BoolList;
}
if (PropertyType == typeof(string))
{
return FilterCharacters.TextList;
}
if (PropertyType == typeof(int) || PropertyType == typeof(double) ||
PropertyType == typeof(float))
{
return FilterCharacters.NumberList;
}
return new List<string>();
}
}
列出自己
public static class FilterCharacters
{
public static Dictionary<FilterTypes, string> FilterCharactersList => new Dictionary<FilterTypes, string>()
{
{FilterTypes.Equals, "=" },
{FilterTypes.NotEquals, "!=" },
{FilterTypes.Greater, ">" },
{FilterTypes.GreaterOrEqual, ">=" },
{FilterTypes.Less, "<" },
{FilterTypes.LessOrEqual, "<=" },
{FilterTypes.Contains, "contains" },
{FilterTypes.NotContains, "does not contain" },
{FilterTypes.True, "True" },
{FilterTypes.False, "False" }
};
public static List<string> NumberList => new List<string>()
{
FilterCharactersList[FilterTypes.Greater],
FilterCharactersList[FilterTypes.GreaterOrEqual],
FilterCharactersList[FilterTypes.Less],
FilterCharactersList[FilterTypes.LessOrEqual],
FilterCharactersList[FilterTypes.Equals],
FilterCharactersList[FilterTypes.NotEquals]
};
public static List<string> TextList => new List<string>()
{
FilterCharactersList[FilterTypes.Contains],
FilterCharactersList[FilterTypes.NotContains],
FilterCharactersList[FilterTypes.Equals],
FilterCharactersList[FilterTypes.NotEquals]
};
public static List<string> BoolList => new List<string>()
{
FilterCharactersList[FilterTypes.True],
FilterCharactersList[FilterTypes.False]
};
}
和xaml
<DataGrid ItemsSource="{Binding}" Grid.Row="0" Grid.Column="0" x:Name="FiltersList1" AutoGenerateColumns="False">
<DataGrid.Columns>
...
<DataGridComboBoxColumn Width="120" ItemsSource="{Binding Path=Types}"/>
我尝试绑定到 FiltersList1 DataContext、ItemsSource,我还尝试指定 SelectedItemBinding、ComboBoxStyles 但这一切都以什么都没有(一个空的组合框)或输出中的错误结尾
System.Windows.Data 错误:2:找不到管理 FrameworkElement 或 FrameworkContentElement 为目标元素。 BindingExpression:Path=DataContext.Types;数据项=空;目标 元素是“DataGridComboBoxColumn”(HashCode=15167431);目标 属性是“ItemsSource”(类型“IEnumerable”)
我的想法已经用完了,无法将互联网上找到的任何答案与这个问题相匹配
【问题讨论】: