Silverlight 从代码隐藏访问ListBoxItem控件
在我的Silverlight 4应用程序中,我有一个列表框,我为它创建了一个itemtemplate:Silverlight 从代码隐藏访问ListBoxItem控件,silverlight,listbox,Silverlight,Listbox,在我的Silverlight 4应用程序中,我有一个列表框,我为它创建了一个itemtemplate: <DataTemplate x:Key="ItemTemplate"> <Grid Background="{StaticResource BrushCharacteristicListBoxItemBackground}"> <Grid.ColumnDefinitions> &
<DataTemplate x:Key="ItemTemplate">
<Grid Background="{StaticResource BrushCharacteristicListBoxItemBackground}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="TextBlockCharacteristicName" Text="{Binding Name}" TextTrimming="WordEllipsis" ToolTipService.ToolTip="{Binding Name}" Margin="6,0,2,0" VerticalAlignment="Center" HorizontalAlignment="Left" />
<TextBlock x:Name="TextBlockSeperator" Text="=" Grid.Column="1" VerticalAlignment="Center" />
<Border Grid.Column="2" HorizontalAlignment="Right" Margin="2,2,6,2" Background="{Binding FunctionState, Converter={StaticResource ConvertCharacteristicFunctionState2Color}}">
<TextBlock x:Name="TextBlockCharacteristicValue" Text="{Binding CalculatedValue, Converter={StaticResource ConvertDouble2Display}}" Padding="2,0" Foreground="{StaticResource BrushCharacteristicListBoxItemBackground}" ToolTipService.ToolTip="{Binding ValueOrFunc}" MaxWidth="72"/>
</Border>
</Grid>
</DataTemplate>
这给了我一个ListBoxItems的列表,但是似乎没有办法从那里获得控件。你能帮我解决这个问题吗
提前感谢,Frank从这个博客中获取小的
VisualTreeEnumeration
代码块:
现在,您可以使用以下代码找到“TextBlockCharacteristicName”元素:-
foreach (var textBlock in ListBoxCharacteristics.Descendents()
.OfType<TextBlock>()
.Where(t => t.Name == "TextBlockCharacteristicName") )
{
// Do stuff with each Text block.
}
foreach(ListBoxCharacteristics.downents()中的var textBlock)
第()类
.Where(t=>t.Name==“TextBlockCharacteristicName”))
{
//对每个文本块进行填充。
}
是否确定无法将单个项目的高度绑定到(附着的)属性?应该是可能的。我需要调整单个项目的宽度,问题是,此宽度取决于其他列表项目:DesiredWidth=Min(Max(AllSimilarItems),MaxWidth)。我不认为这将是有约束力的可能。
foreach (var textBlock in ListBoxCharacteristics.Descendents()
.OfType<TextBlock>()
.Where(t => t.Name == "TextBlockCharacteristicName") )
{
// Do stuff with each Text block.
}