我有一个包含2列的Datagrid:描述和值。说明应显示为文本列。值应显示为Textboxcolumn或Comboboxcolumn,基于true或false。 如何动态更改列的Usercontrol?
由于
答案 0 :(得分:0)
一个选项可能是DataGridTemplateColumn,其中包含两个控件,并将其可见性绑定到项类中的属性。
<DataGridTemplateColumn Header="Value">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding value}" Visibility="{Binding visibilityTextbox}"/>
<ComboBox ItemsSource="{Binding options}" Visibility="{Binding visibilityCombobox}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
然后在你的课堂上:
public string value {get;set;}
public ObservableCollection<string> options {get;set;}
public bool isComboBox {get;set;}
public Visibility visibilityTextbox { get { if(isComboBox) { return Visibility.Collapsed; } else { return Visibility.Visible; }} }
public Visibility visibilityCombobox { get { if(isComboBox) { return Visibility.Visible; } else { return Visibility.Collapsed; }} }