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下的控件

 

posted on   HRDK  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器



点击右上角即可分享
微信分享提示