2017-01-16 10 views
0

ListBox에 정적 인 ObservableCollection<HUDInfo>이 바인딩되어 있습니다. DataTrigger에 'My window class'유형의 데이터 컨텍스트에서 PropertyPath | 'StatusConnection'속성을 해결할 수 없습니다. "라는 다음 오류가 표시됩니다.SelectedItem 알 수없는 DataContext datacontext가 설정되어 있지만

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

TextBlock 또한 DataContext

    <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

데이터 컨텍스트는 각 목록 상자 항목에 대해 올바르게 해석되지만 디자이너는이를 수행 할 수 없습니다.

<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-property가 'http://schemas.microsoft.com/expression/blend/2008'네임 스페이스에 없습니다." 그러나 TextBlock ({Binding SelectedItem.DeviceId, ElementName = ListBoxAvailableHuDs})의 바인딩 문제를 해결할 수 없습니다. –

+0

나는 내 대답을 업데이트했습니다. - D : DataContext를 스타일에 넣으십시오. - 이것이 당신의 코멘트에서 문제를 해결할 지 확신하지 못합니다. –