2017-01-16 86 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放在樣式上 - 不確定這會在您的評論中解決問題 - 儘管如此 –