2010-06-29 3 views
1
<Style x:Key="OrderGroupTemplateStyle" TargetType="{x:Type ContentControl}"> 
<Style.Triggers> 
    <DataTrigger Binding="{Binding Path=Name.ShowDetailedInfo, UpdateSourceTrigger=PropertyChanged}" Value="False"> 
     <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Border BorderBrush="Gray" BorderThickness="2" CornerRadius="3" Margin="2"> 
        <StackPanel Background="LightGoldenrodYellow"> 
        <ContentControl Content="{Binding Path=.}" Style="{StaticResource MyRecordViewModelShortStyle}"/> 
        <ListView ItemsSource="{Binding Path=Items}" Margin="4">                  
        <ListView.ItemContainerStyle> 
         <Style TargetType="{x:Type ListViewItem}"> 
          <Setter Property="HorizontalContentAlignment" Value="Stretch" />       <Setter Property="Padding" Value="2"/> 
          <EventSetter Event="MouseDoubleClick" Handler="ItemsControl_SelectionChanged"/> 
                 </Style> 
                </ListView.ItemContainerStyle> 

목록보기 선택이 변경된 경우 일부 작업을 수행하고 싶습니다. 스타일을 사용하기 때문에 ListView에서 SelectionChanged 이벤트를 사용할 수 없습니다. 나는 EventSetter를 사용하려하지만 프로젝트를 컴파일하는 동안 오류가 :WPF ListView SelectionChanged inside 스타일이 작동하지 않습니다. EventSetter 중 하나

이벤트 'MouseDoubleClick'스타일 (Style)의 대상 태그에 을 지정할 수 없습니다가. 대신 EventSetter를 사용하십시오.

누군가 나를 도와 줄 수 있습니까?

답변

4

스타일을 인라인으로 선언하는 대신 리소스로 만들어보십시오. 나는 그것이 다르게 행동하는 이유를 모르지만, 오류가 사라지는 것처럼 보입니다 :

<Style TargetType="{x:Type ListViewItem}" x:Key="ItemContainerStyle"> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
    <Setter Property="Padding" Value="2"/> 
    <EventSetter Event="MouseDoubleClick" Handler="ItemsControl_SelectionChanged"/> 
</Style> 
<Style x:Key="OrderGroupTemplateStyle" TargetType="{x:Type ContentControl}"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=Name.ShowDetailedInfo, UpdateSourceTrigger=PropertyChanged}" Value="False"> 
      <Setter Property="ContentTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <Border BorderBrush="Gray" BorderThickness="2" CornerRadius="3" Margin="2"> 
          <StackPanel Background="LightGoldenrodYellow"> 
           <ContentControl Content="{Binding Path=.}" Style="{StaticResource MyRecordViewModelShortStyle}"/> 
           <ListView ItemsSource="{Binding Path=Items}" Margin="4" ItemContainerStyle="{StaticResource ItemContainerStyle}"/> 
1

'내가있는 ListView에 인 selectionchanged 이벤트를 사용할 수 없습니다 스타일을 사용하고 있기 때문에'그러나 당신은 또한 스타일을 사용하는 경우, 목록보기의 인 selectionchanged 이벤트를 사용할 수 있습니다 내가 문을 이해하지 않습니다.

+1

실제로 나는 할 수 없습니다. 사용하려고하면 다음 오류가 발생합니다. 오류 'SelectionChanged'이벤트는 스타일의 대상 태그에 지정할 수 없습니다. 대신 EventSetter를 사용하십시오. –

+0

이 시도 <스타일 X를 : 키 = "OrderGroupTemplateStyle"은 TargetType = "{X : 유형은 ContentControl은}"> 을. .. – Ragunathan

관련 문제