-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Closed
Labels
Description
Describe the bug
// DataType ComboBox ItemsSource,this show OK
public static List DataTypes =>
Enum.GetNames(typeof(DataTypeEnum)).ToList();
// DataType2 ComboBox ItemsSource, no static ,this show Error
public List DataTypeList => Enum.GetNames(typeof(DataTypeEnum)).ToList();
To Reproduce
public enum DataTypeEnum
{
Bit,
Byte,
Int16,
Uint16,
Int32,
Uint32,
Real,
String,
Wstring,
DateTime
}
public partial class MainWindowViewModel : ViewModelBase
{
[ObservableProperty]
private ObservableCollection<TagViewModel>? _tags;
// DataType ComboBox ItemsSource,this show OK
public static List<string> DataTypes =>
Enum.GetNames(typeof(DataTypeEnum)).ToList();
// DataType2 ComboBox ItemsSource, no static ,this show Error
public List<string> DataTypeList => Enum.GetNames(typeof(DataTypeEnum)).ToList();
public MainWindowViewModel()
{
Tags = new ObservableCollection<TagViewModel>();
}
private static readonly Random _random = new Random();
private string GenerateRandomAddress()
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
return new string(Enumerable.Repeat(chars, 8)
.Select(s => s[_random.Next(s.Length)]).ToArray());
}
[RelayCommand]
private void Refresh()
{
var tags = new List<TagViewModel>
{
new TagViewModel { Id = 1, DeviceId = 101, DeviceName = "Device1", Name = "Tag1", Address = GenerateRandomAddress(), Desc = "Description1", DataType = DataTypeEnum.Int16.ToString(),DataType2=DataTypeEnum.Int16.ToString(), ArrayCount = 1 },
new TagViewModel { Id = 2, DeviceId = 102,DataType2=DataTypeEnum.Int16.ToString(), DeviceName = "Device2", Name = "Tag2", Address = GenerateRandomAddress(), Desc = "Description2", DataType = DataTypeEnum.Int32.ToString(), ArrayCount = 2 },
new TagViewModel { Id = 3, DeviceId = 103, DeviceName = "Device3", Name = "Tag3", Address = GenerateRandomAddress(), Desc = "Description3", DataType = DataTypeEnum.Real.ToString(), DataType2=DataTypeEnum.Int16.ToString(), ArrayCount = 3 },
new TagViewModel { Id = 4, DeviceId = 104, DeviceName = "Device4", Name = "Tag4", Address = GenerateRandomAddress(), Desc = "Description4", DataType = DataTypeEnum.String.ToString(), DataType2 = DataTypeEnum.Int16.ToString(), ArrayCount = 4 }
};
Tags?.Clear();
foreach (var tag in tags)
{
Tags?.Add(tag);
}
}
}
<DataGridTemplateColumn Header="DataType" Width="120">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate x:DataType="vm:TagViewModel">
<ComboBox
ItemsSource="{x:Static vm:MainWindowViewModel.DataTypes}"
SelectedItem="{Binding DataType, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="数据类型2" Width="120">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate x:DataType="vm:TagViewModel">
<ComboBox x:CompileBindings="False"
ItemsSource="{Binding $parent[DataGrid].DataContext.DataTypeList}}"
SelectedItem="{Binding DataType2, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Expected behavior
No response
Avalonia version
11.2.6
OS
Windows
Additional context
No response
