2011-06-08 73 views
0

我的Silverlight 4应用中有一种样式。我在哪里定义了网格中的列名,是否可以从这个样式的对象中获取这些头文本?在下面的代码中,我希望得到的是应用了这种风格的对象中的字符串“foo”和“bar”。从样式中定义的文本块中获取文本

</Grid> 
    <Grid 
    x:Name="m_Headers" 
    Visibility="Visible" 
    Grid.Row="1"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition 
      Width="{StaticResource DataColunmWidth}" /> 
      <ColumnDefinition 
      Width="{StaticResource DataColunmWidth}" /> 
     </Grid.ColumnDefinitions> 
     <TextBlock 
     Margin="3,0,0,0" 
     Text="foo" 
     Grid.Column="1" /> 
     <TextBlock 
     Margin="3,0,0,0" 
     Text="bar" 
     Grid.Column="2" /> 
    </Grid> 

回答

0

我不认为你可以用纯XAML做到这一点,你必须复制的模板或创建暴露文本值经由模板依赖属性的自定义控制。

最好的解决办法,我认为是设置绑定你的网头,并使用您的视图模型填充它们:

<Grid 
x:Name="m_Headers" 
Visibility="Visible" 
Grid.Row="1"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition 
     Width="{StaticResource DataColunmWidth}" /> 
     <ColumnDefinition 
     Width="{StaticResource DataColunmWidth}" /> 
    </Grid.ColumnDefinitions> 
    <TextBlock 
    Margin="3,0,0,0" 
    Text="{Binding FooText}" 
    Grid.Column="1" /> 
    <TextBlock 
    Margin="3,0,0,0" 
    Text="{Binding BarText}" 
    Grid.Column="2" /> 
</Grid> 
+0

我不认为这会帮助我,因为我有许多不同的风格,适用于同一个对象,我需要知道的是哪些列对于给定样式实际可见。如果我按照描述来绑定文本,我仍然不知道哪些是可见的。也许我在这里错过了一些东西。 – Keller 2011-06-16 08:22:11

+0

如果我理解你是正确的,那么可见性和文本在这种情况下是完全不同的问题,所以也许你的问题不是文本,而是如何创建和维护你的列的状态。 – dain 2011-06-16 21:51:47