在我的数据网格中,我有一个文本框列和另一列应该包含应该动态设置的组合框和文本框的组合。例如,我让用户设置机器的状态。因此,State 和 Value 是每列的标题,其中 Value 可以根据 State 的类型包含组合框或文本框。它的类型可以是布尔值或枚举。如果是枚举,则显示组合框,否则显示文本框。
我正在尝试通过视图模型执行此操作,但我不确定如何在 xaml 中设置 DataGridview。或者在这种情况下是否有可能......?
<DataGrid Name="dataGridView" ItemsSource="{Binding Path=StateParametersList}" CanUserAddRows="False"
IsReadOnly="True" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding State}"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding ValueCell}" SelectedItem="{Binding Value}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
视图模型:
private ObservableCollection<StateParameters> StateParametersList =
new ObservableCollection<StateParameters>();
public ObservableCollection<StateParameters> StateParametersList
{
get { return StateParametersList; }
set
{
StateParametersList = value;
NotifyPropertyChanged(nameof(StateParametersList));
}
}
[Serializable]
public class StateParameters
{
public string State { get; set; }
public object Value { get; set; }
}
List<string> ValueCell = new List<string>();
其中 ValueCell 将是将在运行时填充的组合框中的项目列表。
所以,我本可以通过 xaml.cs 文件完成此操作,并根据其是否枚举创建组合框,但我想通过视图模型实现此目的。而且,每个组合框都有不同的值,这些值在运行时动态填充。我在这里挣扎,因此,如果有人能指出我正确的方向,将不胜感激。
尚方宝剑之说
相关分类