2012-10-26 3 views
3

MVVM을 사용하고 있으며 내 viewmodel에 사전에 바인드 된 listview가 있습니다. 내 xaml에서 선택한 항목을 올바르게 선택한 항목을 설정했지만 불행히도 내가하는 일은하지 않습니다. 속성 데이터 유형이 int로 변경된 selectedindex로 변경하면 설정할 수 있습니다. 내 견해가있다.MVVM listview 사전 선택된 항목 문제에

보기 (XAML)

<Grid Width="auto" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Left" Margin="0,1,0,0"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="auto"></RowDefinition> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="188"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <ListView Name="lstNewPatient" HorizontalAlignment="Left" VerticalAlignment="Bottom" 
     Height="auto" Margin="0,0,0,0" ItemsSource="{Binding Path=TestList}" SelectedItem="{Binding Path=SelectedTestItem}" 
     FontSize="11" SelectionMode="Single"> 
     <ListView.View> 
      <GridView> 
       <GridView.ColumnHeaderContainerStyle> 
        <Style> 
         <Setter Property="FrameworkElement.Visibility" Value="Collapsed"/> 
        </Style> 
       </GridView.ColumnHeaderContainerStyle> 
       <GridViewColumn Width="69" DisplayMemberBinding="{Binding Key}"></GridViewColumn> 
       <GridViewColumn Width="109" DisplayMemberBinding="{Binding Value}"></GridViewColumn> 
      </GridView> 
     </ListView.View> 
    </ListView> 
</Grid> 

뷰 모델

Dictionary<int, string> selectedTestItem= null; 
public Dictionary<int, string> SelectedTestItem 
{ 
    get 
    { 
     return selectedTestItem; 
    } 
    set 
    { 
     selectedTestItem = value; 
     OnPropertyChanged("SelectedTestItem"); 
    } 
} 

private Dictionary<int, string> TestList() 
{ 
    var newTestList = new Dictionary<int, string>(); 

    newTestList.Add(1, "Apple"); 
    newTestList.Add(2, "Car"); 
    newTestList.Add(3, "Laptop"); 


    return newPtLevelList; 
} 

답변

6

SelectedTestItemKeyValuePair<int, string>하지 Dictionary<int, string>

+0

감사해야합니다. 그 트릭을했다. – Calvin

+0

나는 당신의 대답의 타당성에 대해 논쟁하지 않습니다. 그러나 그 이유에 대해 좀 더 깊이 들어가시기 바랍니다 (내 대답이 아닌 내 의견으로) –