2017-01-16 89 views
0

我有一个ListBox与静态ObservableCollection<HUDInfo>绑定。 DataTrigger在类型为“我的窗口类”的数据上下文中显示以下错误“PropertyPath |无法解析属性'StatusConnection'”。SelectedItem未知DataContext虽然设置了datacontext

    <ListBox 
         x:Name="ListBoxAvailableHuDs" 
         ItemsSource="{Binding AvailableHUDs, Source={x:Static Core:HudModel.Current}}" 
         <ListBox.ItemContainerStyle> 
          <Style TargetType="ListBoxItem"> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding StatusConnection}" Value="CanDisconnect"> 
             <Setter Property="FontWeight" Value="Bold"/> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </ListBox.ItemContainerStyle> 
        </ListBox> 

Window我设置以下DataContext

DataContext="{Binding RelativeSource={RelativeSource Self}}"

TextBlock也无法解决DataContext

    <TextBlock 
         Text="{Binding SelectedItem.DeviceId, ElementName=ListBoxAvailableHuDs}"/> 

“无法解析的数据背景下财产 '的DeviceID'类型'对象'“

如何将ListBoxDataContext设置为HudInfoListBoxItem使用的是正确的DataContext

+0

当您显式设置ItemsSource绑定的来源时,Window(或ListBox)的DataContext是无关紧要的。 ListBoxItem的DataContext是AvailableHUDs集合中的相应元素。 'StatusConnection'和'DeviceId'必须是'HUDInfo'类中的公共属性。 – Clemens

+0

当应用程序编译并启动时,一切正常,但只有在设计时才有这些我想解决的错误。 –

+0

重新启动Visual Studio。 – Clemens

回答

1

在运行时,数据上下文对于每个列表框项都正确解析,但是,设计人员无法做到这一点。您可以执行以下操作:

<Style TargetType="ListBoxItem" d:DataContext="{d:DesignInstance HudInfo }"> 
    <Style.Triggers> 
    ... 
    </Style.Triggers> 
</Style TargetType="ListBoxItem" d:DataContext="{d:DesignInstance HudInfo"> 

xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

我觉得这可能会导致被显示在设计师的错误 - 强调在d:DataContext的一部分,但它至少可以让它来解决绑定。

+0

错误是“在命名空间中找不到datacontext属性”http://schemas.microsoft.com/expression/blend/2008'“。但是TextBlock的绑定问题({Binding SelectedItem.DeviceId,ElementName = ListBoxAvailableHuDs})无法解决。 –

+0

我已经更新了我的答案 - 将d:DataContext放在样式上 - 不确定这会在您的评论中解决问题 - 尽管如此 –