1.DataGrid下的DataGridTemplateColumn的ComboBox绑定问题
最开始的形式
<DataGridTemplateColumn Header="截面名称">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Background="Transparent"
DisplayMemberPath="ShowName"
ItemsSource="{Binding DataContext.SecLib, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}}"
SelectedValue="{Binding SectionName}"
SelectedValuePath="ShowName" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
导致这个数据一直不能绑定到SectionName上
找到了StackOverFlow中的解答:DataGridTemplateColumn 中的 WPF 数据绑定 ComboBox - 堆栈溢出 (stackoverflow.com)
<DataGridTemplateColumn Header="截面名称">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Background="Transparent"
DisplayMemberPath="ShowName"
ItemsSource="{Binding DataContext.SecLib, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}}"
SelectedValue="{Binding SectionName, UpdateSourceTrigger=PropertyChanged}"
SelectedValuePath="ShowName" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
添加了 UpdateSourceTrigger=PropertyChanged后,数据成功绑定
假设控件的绑定源是一个int,string,double之类的数组的话,可以写一个Wrapper
类似下面这样,这样就可以直接绑定到其中的content
public class StringWrapper:BindableBase
{
public StringWrapper(string content)
{
this.Content = content;
}
private string content;
public string Content
{
get { return content; }
set { content = value;RaisePropertyChanged(); }
}
}