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>
그런 다음 당신은 단지 속성을 업데이트해야하고, 스타일에 대한 새로운 글꼴을 반영합니다 :
안녕 답장을 보내 히 덕분에 대해서만 유효합니다. 나는 당신이 제안한 방법을 시도했지만 코드를 작동시키지 못했습니다. "ListFont"속성이 "AncestorType"에서 오류가 발생 함을 인텔리 센스의 상대 소스로 사용할 수 없다고 말할 수 있습니까? 가능한 경우 코드를 설명하거나 공유하여 명확한 이해를 얻을 수 있습니까? – AKROCKS
SL 4 이하의 상위 속성에 스타일을 바인딩 할 수 있는지 잘 모르겠습니다. 컨트롤의 바인딩을 설정할 수있는이 기사가 있지만 스타일에는 적합하지 않습니다. http://blog.thekieners.com/2010/09/08/relativesource-binding-with-findancestor-mode-in-silverlight / – Slugart