2013-08-15 3 views
0

나는 통화 항목 목록에 바인딩 된 목록 상자가 있습니다. 통화 목록 상자가 통화 개체의 목록에 바인딩이 목록 상자의 각 항목이 나는 건물로되어 selectedItem 속성을 결합하고자하는 이미지의 StackPanel에와 TextBlock의항목의 목록 상자에서 선택한 항목을 속성에 바인딩합니까?

입니다

public class Currency 
{ 
    public string code { get; set; } 
    public string countryName { get; set; } 
    public string imgUrl { get; set; } 
    public string infoLink { get; set;} } 
} 

클래스를하다 에서 코드 숨김 목록 상자에서 선택한 항목을 beind해야 그 재산을

<ListBox Name="sCurrencyLB" Margin="10,0,0,0" Width="Auto" Height="180" 
    IsEnabled="{Binding IsChecked, ElementName=LiveTilesToggleBtn}" 
    SelectedItem="{Binding STileCurrency, Mode=TwoWay, 
      Source={StaticResource livetilemanager}}" 
    ItemsSource="{Binding SCurrencyList}" > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal" Margin="0,10,0,0"> 
       <TextBlock Name="scountryNametb" Width="50" Text="{Binding code}" 
        VerticalAlignment="Center" HorizontalAlignment="Right"/> 
       <Image Source="{Binding imgUrl}" Height="50" Width="50" 
        HorizontalAlignment="Left" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

코드를 유지하기

private Currency sTileCurrency; 

public Currency STileCurrency 
{ 
    get 
    { 
     return appSettings.GetValueorDefault<Currency>("STileCurrency", null); 
    } 
    set 
    { 
     if (appSettings.AddOrUpdateValue("STileCurrency", value)) 
     { 
      settings.Save(); 
     } 

    } 
} 

참고 : 나는 당신이

이 시도해야 할 무엇 XAML

답변

0

따르 MVVM 패턴 (꽤) 내부의 속성을 포함하는 클래스의 인스턴스를 생성 : befor을

의 InitializeComponent(); 창의 당신의 계약자에이 추가

this.DataContext = this; 

그래서이

SelectedItem="{Binding STileCurrency,Mode=TwoWay} 
+0

나는 모든하지만 헛된 시도! 아무것도 선택하지 않습니다! SelectedIndex를 바인딩하려고하는데 예외가 발생합니다. –

+1

확실합니다. 이 2 개의 파일을 다운로드하고 자신과 비교해 볼 때 ItemsSource, SelectedIndex 및 SelectedValue를 listbox에 바인딩했습니다. 다운로드하고 그것이 작동한다면, 당신은 스스로 게시물을 남기고 대답을 쓰십시오. 그렇지 않으면 다시 물어볼 수 있습니다. [여기에서 다운로드하십시오 (http://www.fileconvoy.com/dfl.php?id=g0b2411915e0299fd99935218976c684a6acbab46c),이 파일은 7 일 후에 만료됩니다. –

+0

먼저 귀하의 노력에 감사드립니다. Windows Phone의 SelectedIndex는 WPF와는 조금 다릅니다. WPF의 코드가 제대로 작동하지만 Windows Phone에서 예외가 발생합니다. 다행히도 XAML이 아닌 Codebehind 부분에서 ItemSource를 설정하는 솔루션을 발견했습니다. SelectedItem 속성의 경우 바인딩이 제대로 작동하지만 선택한 항목을 강조 표시하지 않습니다. –

0

처럼 의 selectedItem을 결합 당신이해야하는 일을한다 여기 livetilemanager 경우 :

Source={StaticResource livetilemanager}} 

는 속성을 가지고 있습니다 그것에 :

SCurrencyList 

코드 숨김이 기본 DataContext이기 때문에 SCurrencyList가 코드 숨김의 속성이면 SelectedItem 바인딩을위한 Source를 지정할 필요가 없습니다.

그런데 바인딩 오류를 확인하는 방법은 디버깅하는 동안 VS의 디버그 창을 감시하는 것입니다. C#에서

그런데 그것은 자본의 첫 글자, 예컨대 :와 이름의 호텔이있는 전형적인

public string Code {get;set;} 
관련 문제