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(); }
}
}
wpf的全局样式和局部样式
全局样式,如一开始在app中定义的样式会应用到所有控件,windows下的样式会影响windows下的所有控件,usercontrol下的样式会影响usercontrol下的所有控件
局部样式,如Grid下的样式只会影响grid下的控件
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器