Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF获取GridView列中文本框的绑定值_C#_Wpf_Binding - Fatal编程技术网

C# WPF获取GridView列中文本框的绑定值

C# WPF获取GridView列中文本框的绑定值,c#,wpf,binding,C#,Wpf,Binding,我正在实现一个函数,按列值对列表视图中的项目进行排序 下面是我的一段XAML代码: <ListView x:Name="ListView4" SelectedItem="{Binding SelectedRepere}" ItemsSource="{Binding ListeDesReperes}" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="4" MouseDoubleClick="ListView_MouseDoubleClick" G

我正在实现一个函数,按列值对
列表视图中的项目进行排序

下面是我的一段XAML代码:

<ListView x:Name="ListView4" SelectedItem="{Binding SelectedRepere}" ItemsSource="{Binding ListeDesReperes}"  Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="4" MouseDoubleClick="ListView_MouseDoubleClick" GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler" ContextMenuOpening="ListView4_ContextMenuOpening" SelectionChanged="ListView4_SelectionChanged" Visibility="{Binding Grid4Visible, Converter={StaticResource BoolToVisConverter}}" >
                <ListView.ContextMenu>
                    <ContextMenu x:Name="Context4">
                        <MenuItem x:Name="Context4MakeLonger" Header="{x:Static p:Resources.MakeLonger}" Click="Make_Longer"/>
                        <MenuItem x:Name="Context4Search" Header="{x:Static p:Resources.Search}" Click="Search_Detail"/>
                    </ContextMenu>
                </ListView.ContextMenu>
                <ListView.View>

                    <GridView AllowsColumnReorder="true" x:Name="GridView4">
                        <GridViewColumn DisplayMemberBinding="{Binding Path=ID}" Header="ID" Width="50"/>
                        <GridViewColumn DisplayMemberBinding= "{Binding Path=Name}" Header="{x:Static p:Resources.Nom}" Width="200">

                        </GridViewColumn>
                        <GridViewColumn Header="{x:Static p:Resources.QuantiteUnit}" Width="100">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Grid>
                                        <TextBlock Text="{Binding Path=Quantite}" TextAlignment="Right"/>
                                    </Grid>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="{x:Static p:Resources.QuantiteTot}" Width="100">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Grid>
                                        <TextBlock Text="{Binding Path=TotalQuantity}" TextAlignment="Right"/>
                                    </Grid>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Profil}" Header="{x:Static p:Resources.Profil}" Width="100"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Priorite}" Header="{x:Static p:Resources.Priorite}" Width="100"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Matiere}" Header="{x:Static p:Resources.Matiere}" Width="100"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=GroupeProfil}" Header="{x:Static p:Resources.GroupeProfil}" Width="100"/>
                        <GridViewColumn DisplayMemberBinding="{Binding Path=Longueur}" Header="{x:Static p:Resources.Longueur}" Width="100">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Grid>
                                        <TextBlock Text="{Binding Path=Longueur, StringFormat={}{0:#000}}" TextAlignment="Right"/>
                                    </Grid>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>

                        <GridViewColumn Header="{x:Static p:Resources.Weight}" Width="70">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Grid>
                                        <TextBlock Text="{Binding Path=Poids, StringFormat=N2}" TextAlignment="Right"/>
                                    </Grid>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Width="140" Header="{x:Static p:Resources.Avancement}">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Rectangle Name="PART_Track"  Height="20" Stroke="black" StrokeThickness="1" Fill="{Binding RectangleProgression}" Tag="{Binding Name}" MouseMove="mouseOverProgression">
                                        <Rectangle.ToolTip>
                                            <StackPanel>
                                                <Grid>
                                                    <Grid.ColumnDefinitions>
                                                        <ColumnDefinition/>
                                                        <ColumnDefinition Width="10"/>
                                                        <ColumnDefinition/>
                                                    </Grid.ColumnDefinitions>
                                                    <TextBlock Grid.Column="0" Text="{Binding Path=ToolTipProgressionTb1}" TextAlignment="Left" HorizontalAlignment="Left"/>
                                                    <TextBlock Grid.Column="2" Text="{Binding Path=ToolTipProgressionTb2}" TextAlignment="Right" HorizontalAlignment="Right"/>

                                                </Grid>
                                            </StackPanel>
                                        </Rectangle.ToolTip>
                                    </Rectangle>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>
这段代码与我在
GridViewColumn
中定义绑定权限的代码一样好(即:Profil、Priorite…)

问题是,当我的专栏中有一些
cellmetplate
TextBox
时,我想使用
TextBox
displaymberbinding

对于“Longueur”列,我尝试在
GridViewColumn
TextBox
中添加绑定,解决了问题,但我认为这不是一个好的解决方案

我该怎么做呢

header = ((System.Windows.Data.Binding)headerClicked.Column.CellTemplate.TextBox.DisplayMemberBinding).Path.Path;

以下是如何从
TextBlock
检索绑定路径:

DataTemplate cellTemplate = headerClicked.Column.CellTemplate;
Grid grid = cellTemplate.LoadContent() as Grid;
TextBlock textBlock = grid.Children.OfType<TextBlock>().FirstOrDefault();
string bindingPath = BindingOperations.GetBinding(textBlock, TextBlock.TextProperty).Path.Path;
DataTemplate-cellTemplate=headerClicked.Column.cellTemplate;
Grid Grid=cellTemplate.LoadContent()作为网格;
TextBlock TextBlock=grid.Children.OfType().FirstOrDefault();
string bindingPath=BindingOperations.GetBinding(textBlock,textBlock.TextProperty).Path.Path;
DataTemplate cellTemplate = headerClicked.Column.CellTemplate;
Grid grid = cellTemplate.LoadContent() as Grid;
TextBlock textBlock = grid.Children.OfType<TextBlock>().FirstOrDefault();
string bindingPath = BindingOperations.GetBinding(textBlock, TextBlock.TextProperty).Path.Path;