如何将组合框中的选定项绑定到datagrid中的textblock [英] how to bind a selected item in a combobox to textblock inside datagrid

查看:83
本文介绍了如何将组合框中的选定项绑定到datagrid中的textblock的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

hi
i我在数据网格中使用了combobox而且组合框在cellediting模板中

i只想将组合框中的选定项目绑定到datgrid内的textblock

如果有人知道如何帮助我这里是我的xaml:

 <   datagrid     autogeneratecolumns   =  False    virtualizingstackpanel.isvirtualizing   = 错误    grid.row   =  1 < span class =code-attribute>   grid.columnspan   =  7    name   =  attendancegrid   已删除  = #FFDCE8EB    canuseraddrows   =  False < span class =code-keyword>>  
BorderBrush =ChocolateBorderThickness =5RowHeight =30IsSynchronizedWithCurrentItem =TrueHorizo​​ntalGridLinesBrush =#FFB74646IsReadOnly =False Foreground =BlackLoaded =attendancegrid_LoadedSelectionChanged =attendancegrid_SelectionChangedCurrentCellChanged =attendancegrid_CurrentCellChangedCellEditEnding =attendancegrid_CellEditEnding>

< datagrid.columns >
< datagridtextcolumn header = 小时 binding = {Binding time} fontsize = 14 fontweight = 粗体 isreadonly < span class =code-keyword> = True width = 100 / >


< span class =code-keyword>< datagridtemplatecolumn header = 星期一 width = 100 >
< datagridtemplatecolumn。 celleditingtemplate >
< datatemplate >
< stackpanel orientation = 水平 >
< combobox x:name = 星期一 width = 50 selectedvalue = {Binding ProductName,Mode = TwoWay} issynchronizedwithcurrentitem = true 已加载 = monday_Loaded selectionchanged = monday_SelectionChanged xmlns:x = #unknown > < / combobox >
< combobox x:名称 = staff width = 50 已加载 = staff_Loaded xmlns:x = #unknown > < / combobox >
< / stackpanel >
< / datatemplate >

< / datagridtemplatecolumn。 celleditingtemplate >
< datagridtemplatecolumn.celltemplate >
< datatemplate >
< stackpanel >
< textblock x:name = mon text < span class =code-keyword> = {Binding ProductName} xmlns:x = #unknown > < / textblock >
< / stackpanel >
< / datatemplate >
< / datagridtemplatecolumn.celltemplate >

< / datagridtemplatecolumn >


< / datagrid.columns >
< datagrid。 columnheader style >
< 样式 TargetType = DataGridColumnHeader
>
< setter property =FontSizevalue =15/ >
< setter property =FontWeightvalue =Bold/>
< setter property =Foregroundvalue =Chocolate/>
< setter property =Horizo​​ntalContentAlignmentvalue =Center/>
< / 风格 >
< / datagrid.columnheader 样式 > < / datagrid >

解决方案





首先,我不明白你为什么要使用DataGrid?您可以使用ItemsControl创建更简单的解决方案。



其次,您正在尝试实现Master-Detail模式。 Combo-Box选择的值是Master,TextBlock是Details。



我写了一个简单的例子,它完全符合你在我的文章中想做的事情:



如何:使用主 - 细节模式使用WPF Hierarchical DataTemplate [ ^ ]



请查看。如果您有更多问题我会很乐意提供帮助。



最好的问候,



Shai

hi i am using combobox inside datagrid and the combobox is in cellediting template
i just want to bind the selected item in the combobox to textblock inside the datgrid
if any knows how to do it help me here is my xaml:

<datagrid autogeneratecolumns="False" virtualizingstackpanel.isvirtualizing="False" grid.row="1" grid.columnspan="7" name="attendancegrid" removed="#FFDCE8EB" canuseraddrows="False">
                  BorderBrush="Chocolate" BorderThickness="5" RowHeight="30" IsSynchronizedWithCurrentItem="True"  HorizontalGridLinesBrush="#FFB74646" IsReadOnly="False" Foreground="Black" Loaded="attendancegrid_Loaded" SelectionChanged="attendancegrid_SelectionChanged" CurrentCellChanged="attendancegrid_CurrentCellChanged" CellEditEnding="attendancegrid_CellEditEnding">
           
            <datagrid.columns>
                <datagridtextcolumn header="Hours" binding="{Binding time}" fontsize="14" fontweight="Bold" isreadonly="True" width="100" />


                <datagridtemplatecolumn header="Monday" width="100">
                    <datagridtemplatecolumn.celleditingtemplate>
                        <datatemplate>
                            <stackpanel orientation="Horizontal">
                                <combobox x:name="monday" width="50" selectedvalue="{Binding ProductName, Mode=TwoWay}" issynchronizedwithcurrentitem="true" loaded="monday_Loaded" selectionchanged="monday_SelectionChanged" xmlns:x="#unknown"></combobox>
                                <combobox x:name="staff" width="50" loaded="staff_Loaded" xmlns:x="#unknown"></combobox>
                            </stackpanel>
                        </datatemplate>
                       
                    </datagridtemplatecolumn.celleditingtemplate>
                    <datagridtemplatecolumn.celltemplate>
                        <datatemplate>
                            <stackpanel>
                                <textblock x:name="mon" text="{Binding ProductName}" xmlns:x="#unknown"></textblock>
                                </stackpanel> 
                        </datatemplate>
                    </datagridtemplatecolumn.celltemplate>

                </datagridtemplatecolumn>
              
               
            </datagrid.columns>
            <datagrid.columnheaderstyle>
                <Style TargetType="DataGridColumnHeader">
                    <setter property="FontSize" value="15" />
                    <setter property="FontWeight" value="Bold" />
                    <setter property="Foreground" value="Chocolate" />
                    <setter property="HorizontalContentAlignment" value="Center" />
                </Style>
            </datagrid.columnheaderstyle></datagrid>

解决方案

Hi,

First, I don't understand why are you using DataGrid? You can create a much more simple solution using ItemsControl.

Second, You are trying to implement a Master-Detail pattern. The Combo-Box selected value is the Master and the TextBlock is the Details.

I've wrote a simple example that do exactly what you want to do in my article:

How to: Use the Master-Detail Pattern with WPF Hierarchical DataTemplate[^]

Please review it. If you have more questions I'll be happy to help.

Best Regards,

Shai


这篇关于如何将组合框中的选定项绑定到datagrid中的textblock的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆