2009-05-13 5 views
1

WPF 모델로 머리를 감싸려고 노력합니다.WPF 기초 : DataTrigger에서 외부 속성을 설정하는 방법?

목록 상자 안에는 문자열 식별자가 있습니다.이 코드는 잘 작동합니다. 현재 선택된 항목의 식별자를 둘러싸는 제어를위한 내 숨김 코드에 액세스 할 수

나는이 있습니다.

<ListBox.ItemTemplate> 
<DataTemplate> 
    <StackPanel Width="320"> 
    <Label Content="{Binding Path=ShortName}" Style="{StaticResource ListHeader}"/> 
     <TextBlock TextWrapping="Wrap" Text="{Binding Path=Description}" Style="{StaticResource ListText}" /> 
    </StackPanel> 
</DataTemplate> 
</ListBox.ItemTemplate> 

을 그리고 난 내가 좋아하는 무언가를 추가해야한다고 생각 :

<DataTemplate.Triggers> 
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True"> 
    <Setter Property="" TargetName=""> 
    <Setter.Value> 

    </Setter.Value> 
    </Setter> 
</DataTrigger> 

하지만 저는 외부 제어 (즉, 외부 세계)의 일부인 속성을 설정하는 세터를 설정하는 방법에 관해서는 분실했습니다. 어떻게 든이 거꾸로 생각한거야? 다음과 같이

CustomItem item = (CustomItem)listBox1.SelectedItem; 
MessageBox.Show(item.ShortName); 

그리고 당신의 XAML은 다음과 같습니다 : 당신이 목록 상자 외부에서 선택한 목록 상자 항목에 속성에 액세스하려는 경우

답변

1

는 당신은 뒤에 코드에서 다음과 같은 작업을 수행 할 수

<ListBox Height="100" Name="listBox1"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Name="stackPanel1"> 
        <Label Content="{Binding Path=Shortname}"/> 
        <TextBlock Text="{Binding Path=Description}"/> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

선택한 항목을 목록 상자에서 개체 유형으로 캐스팅 한 다음 개체의 속성에 액세스하면됩니다.

희망이 있습니다.

+0

죄송합니다. 위의 ListBox.ItemTemplate에 StackPanel이 있습니다. – evilfred

+0

안녕하세요 EvilFred 님, 제 Xaml을 귀하의 것으로 설정했지만 항목 모음에 개체 모음을 바인딩하고 있습니다. 목록 상자의 속성은 내가 추정한다. ListBox의 selecteditem 속성을 사용하면 UI 요소가 아닌 바인딩 된 객체에 액세스 할 수 있습니다. – Blounty

+0

오, 이런. UI가 아닌 요소와 UI의 마법적인 분리는 사람들이 WPF에서 계속 이야기하고 있습니다. 감사! – evilfred

1

SelectedValuePath 속성을 사용해 보셨습니까? 코드에서

당신이 ItemsSource 속성에 말 고객의 목록을 가지고, 당신은 이름에 SelectedValuePath을 설정하면, 당신의 SelectedValue 속성은 고객의 대신에 고객의 이름을 반환합니다 ...

뒤에 SelectedValue는 이름이 될 것이다, 내 예에 .. 당신의 고객 개체를 반환합니다 selectedItem가 ..이 어떻게 든 도움이

희망 ..

행운을 빕니다!

관련 문제