2017-01-16 15 views
0

ListBoxがあり、スタティックObservableCollection<HUDInfo>がバインドされています。 DataTriggerには、「 'my window class'」のデータコンテキストでPropertyPath |プロパティ 'StatusConnection'を解決できません "という次のエラーが表示されます。SelectedItem unknown DataContextが設定されていますが、

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

マイTextBlockDataContext

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

は「プロパティ 'DEVICEID' データコンテキストでは解決できません解決することはできません。

    <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次のように設定しましたタイプ 'オブジェクト'の "

DataContextListBoxからHudInfoに設定する方法、またはListBoxItemで右を使用する方法DataContext

+0

ItemsSourceバインディングのソースを明示的に設定した場合、Window(またはListBox)のDataContextは無関係です。 ListBoxItemのDataContextは、AvailableHUDsコレクションの各要素です。 'StatusConnection'と' DeviceId'は 'HUDInfo'クラスのpublicプロパティでなければなりません。 – Clemens

+0

確かに、アプリケーションがコンパイルされ、起動されたとき、すべてが機能しますが、設計時にはこれらのエラーを解決したいだけです。 –

+0

Visual Studioを再起動します。 – Clemens

答えて

1

データコンテキストは各リストボックス項目に対して正しく解決されますが、デザイナーはこれを実行できません。あなたは次のことを行うことができるかもしれません:

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

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

私は、これはデザイナーに示されるエラーが発生することができます見つける - dは下線:DataContextの一部を、それは、少なくともことができますそれはバインディングを解決するためです。

+0

エラーは "datacontext-propertyが名前空間 'http://schemas.microsoft.com/expression/blend/2008'に見つかりませんでした。しかし、TextBlock({Binding SelectedItem.DeviceId、ElementName = ListBoxAvailableHuDs})のバインディングの問題を解決することはできません。 –

+0

私は自分の答えを更新しました - スタイルにDataContextを入れてください - これはあなたのコメントの問題を解決してくれるのではないかと思います。 –

関連する問題