2012-01-17 4 views
0

아래 코드 스 니펫과 같이 목록 상자 컨트롤이 내 레이아웃에 추가되었습니다.런타임시 Silverlight 목록 상자 업데이트 스타일

<ListBox x:Name="lstFilters" ItemsSource="{Binding CustomerCollection, Source={StaticResource VMCustomers}}" ScrollViewer.VerticalScrollBarVisibility="Disabled" Height="200" Margin="12,20,235,80"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <HyperlinkButton Content="{Binding Name}" Style="{StaticResource styleFont}"></HyperlinkButton> 
          <TextBlock x:Name="txtFilterCount" Text="{Binding ContactNumber, Mode=TwoWay}"></TextBlock> 
        </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

    <Style x:Key="styleFont" TargetType="HyperlinkButton"> 
      <Setter Property="FontFamily" Value="Verdana"></Setter> 
     </Style> 

나는 글꼴 모음을 HyperlinkButton 컨트롤로 설정하는 스타일을 작성했습니다. 지금 런타임에서 값을 얻고 있기 때문에 코드에서이 fontfamily를 설정하려고합니다. 그래서 그것을 변경하는 방법과 내가 한 번만 설정하려는 생성자 또는 페이지로드 이벤트 즉,이 일을하고 싶습니다 한 가지 더 그것은 모든 항목 즉, 100 항목이 다음에 적용해야 모두 적용해야합니다 100 항목. 그래서 항상 모든 이벤트를 바인딩하는 것이 아니라 더 빠릅니다.

<Style x:Key="styleFont" TargetType="HyperlinkButton"> 
    <Setter Property="FontFamily" 
     Value="{Binding DataContext.ListFont, 
     RelativeSource={RelativeSource AncestorType=UserControl}}"> 
    </Setter> 
</Style> 

그런 다음 당신은 단지 속성을 업데이트해야하고, 스타일에 대한 새로운 글꼴을 반영합니다 :

답변

0

이 작업을 수행하는 가장 쉬운 방법은 다음과 같은 XAML을 사용하여 해당 UserControl의 속성에 스타일을 결합하는 것입니다 모든 목록 항목.

업데이트 : 이 답변은 실버 라이트 5

+0

안녕 답장을 보내 히 덕분에 대해서만 유효합니다. 나는 당신이 제안한 방법을 시도했지만 코드를 작동시키지 못했습니다. "ListFont"속성이 "AncestorType"에서 오류가 발생 함을 인텔리 센스의 상대 소스로 사용할 수 없다고 말할 수 있습니까? 가능한 경우 코드를 설명하거나 공유하여 명확한 이해를 얻을 수 있습니까? – AKROCKS

+0

SL 4 이하의 상위 속성에 스타일을 바인딩 할 수 있는지 잘 모르겠습니다. 컨트롤의 바인딩을 설정할 수있는이 기사가 있지만 스타일에는 적합하지 않습니다. http://blog.thekieners.com/2010/09/08/relativesource-binding-with-findancestor-mode-in-silverlight / – Slugart

관련 문제