Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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# 如何绑定所有列表框';是否将项目添加到同一属性?_C#_Wpf_Mvvm_Listbox - Fatal编程技术网

C# 如何绑定所有列表框';是否将项目添加到同一属性?

C# 如何绑定所有列表框';是否将项目添加到同一属性?,c#,wpf,mvvm,listbox,C#,Wpf,Mvvm,Listbox,我有一个带有以下数据模板的列表框: <DataTemplate x:Key="ItemTmp"> <Border Name="Border" BorderBrush="Aqua" BorderThickness="1" Padding="5" Margin="5"> <Grid> <Grid.ColumnDefinitions>

我有一个带有以下数据模板的列表框:

        <DataTemplate x:Key="ItemTmp">
        <Border Name="Border" BorderBrush="Aqua" BorderThickness="1" Padding="5" Margin="5">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>

                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding Path=Item1}"></TextBlock>
                <TextBlock Grid.Column="1" Text="{Binding Path=Item2}"></TextBlock>
                <TextBox  Grid.Column="2" Text="{Binding Path=UpdatedGrade,UpdateSourceTrigger=LostFocus,Mode=TwoWay }" />
            </Grid>
        </Border>
    </DataTemplate>
</UserControl.Resources>

也就是说,我希望每次用户在其中一个文本框中写入内容时,它都会更新ViewModel中的同一字段-UpdateGrade,问题是它不起作用

当我仅将单个文本框绑定到此字段时,它确实起作用,例如:

TextBox Grid.Row="3" Text="{Binding Path=UpdatedGrade,UpdateSourceTrigger=LostFocus,Mode=TwoWay }"></TextBox>
TextBox Grid.Row=“3”Text=“{Binding Path=updategrade,UpdateSourceTrigger=LostFocus,Mode=TwoWay}”>

有人知道我该怎么做吗?

列表框项的DataContext是集合中单个项的数据上下文,因此它试图查找该项的属性

只要这不是windows应用商店应用程序,您就可以执行以下操作:

Text="{Binding Path=DataContext.UpdatedGrade, UpdateSourceTrigger=LostFocus, Mode=TwoWay, RelativeSource={RelativeSource AncestorType=UserControl}}"
使用win8应用程序,您无法轻松找到祖先,因此您必须提供包含上下文的元素的名称

Text="{Binding Path=DataContext.UpdatedGrade, UpdateSourceTrigger=LostFocus, Mode=TwoWay, ElementName=MyUserControl}"
我不确定这将如何操作——直接绑定到文本框——它可能会在DataContext中更新UpdateGrade,但我也不确定

Text="{Binding Path=Text, UpdateSourceTrigger=LostFocus, Mode=TwoWay, ElementName=MyTextBox}"

您的第一个解决方案与我一起从双向更改为单向源似乎解决了它,感谢您的快速响应。