wpf 系统窗口数据错误:40绑定表达式路径错误

bkhjykvo  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(145)

所以这就是密码-

<DataGridTemplateColumn.HeaderTemplate>
                            <DataTemplate>
                                <Grid >
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="*"/>
                                    </Grid.RowDefinitions>
                                        <Grid Grid.Column="1" >     
                                            <Button Command="{Binding OpenWindowCommand}">         
                                               <Image Source="{StaticResource IconImage}" Width="20" Height="20" />   
                                            </Button> 
                                        </Grid>
                                    ...

运行时出现此错误。
系统窗口数据错误:40:绑定表达式路径错误:在“对象”“字符串”(哈希代码=1217782553)“上找不到”OpenWindowCommand“属性。绑定表达式:路径=OpenWindowCommand;数据项=“字符串”(哈希代码=1217782553);目标元素为'Button'(名称='');目标属性为“Command”(类型为“ICommand”)
系统窗口数据信息:20:由于缺少信息,BindingExpression无法检索值。BindingExpression:路径=OpenWindowCommand;数据项=“字符串”(哈希代码=1217782553);目标元素为'Button'(名称='');目标属性为“Command”(类型为“ICommand”)
系统窗口数据信息:21:BindingExpression无法从Null数据项检索值。当绑定被分离或绑定到没有值的可为Null的类型时,可能会发生这种情况。BindingExpression:Path=OpenWindowCommand;数据项=“字符串”(哈希代码=1217782553);目标元素为'Button'(名称='');目标属性为“Command”(类型为“ICommand”)
系统窗口数据信息:10:无法使用绑定检索值,并且不存在有效的回退值;使用默认值。绑定表达式:路径=OpenWindowCommand;数据项=“字符串”(哈希代码=1217782553);目标元素为'Button'(名称='');目标属性为“Command”(类型为“ICommand”)
我有

public ICommand OpenWindowCommand
{
    get
    {
           ...
    }
}

在ViewModel类中,但确定为什么会发生。
我知道同样的问题也有答案,但我不能让它为按钮工作。

bqucvtff

bqucvtff1#

您的绑定位于错误的DataContext中。您可以通过在绑定中使用“ElementName”或“RelativeSource”来指定DataContext:

<UserControl x:Name="_myUserControl" >
  <DataGridTemplateColumn.HeaderTemplate>
      <DataTemplate>
          <Grid >
              <Grid Grid.Column="1" >     
                   <!--<Button Command="{Binding DataContext.OpenWindowCommand, RelativeSource={RelativeSource AncestorType=UserControl, Mode=FindAncestor}}">  -->       
                   <Button Command="{Binding DataContext.OpenWindowCommand, ElementName=_myUserControl}">         
                        <Image Source="{StaticResource IconImage}" Width="20" Height="20" />   
                   </Button> 
              </Grid>
 </UserControl >

相关问题