Bindning:使用DataTemplate和绑定可视化未命名的布尔值列表

时间:2012-05-14 12:55:54

标签: c# windows-phone-7 xaml data-binding

我有一个ViewModel,它包含一个OboleableCollection布尔值。我有一个控制权。 想要将我的布尔列表可视化为具有两种不同颜色的矩形列表。 我不能宣布这样的约束。这是我的代码:

<UserControl.Resources>
    <DataTemplate x:Key="DataTemplateName">
        <Grid Margin="12,0,0,0">
            <Rectangle Fill="{Binding ***PROBLEM***   
                                       , Converter={StaticResource BoolToSelectionBrushConverter}"} 
                                       HorizontalAlignment="Right" 
                                       Margin="0" Width="25" 
                                       Height="25" VerticalAlignment="Top" 
                                       StrokeThickness="0"/>
        </Grid>
    </DataTemplate>
</UserControl.Resources>

 <Grid x:Name="LayoutRoot">
<ItemsControl 
        ItemsSource="{Binding Statuses}" 
                    ItemTemplate="{StaticResource DataTemplateName}" 
                    Margin="0,0,8,0">
    <ItemsControl.ItemsPanel>
          <ItemsPanelTemplate>
                     <VirtualizingStackPanel Orientation="Horizontal" />
          </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
</ItemsControl>

我可以在不创建包装器的情况下实现它吗?

public class Value 
{
   public bool IsOk{get;set;}
} 

并绑定到命名属性:

      <Grid Margin="12,0,0,0">
    <Rectangle Fill="{Binding IsOk 
                       , Converter={StaticResource BoolToSelectionBrushConverter}}" 
                       HorizontalAlignment="Right" 
                       Margin="0" Width="25" 
                       Height="25" VerticalAlignment="Top" 
                       StrokeThickness="0"/>
    </Grid>

2 个答案:

答案 0 :(得分:3)

我目前没有方便的WP7开发环境,所以它未经测试,但我认为以下内容应该有效:

    <Rectangle Fill="{Binding BindsDirectlyToSource=True,
                              Converter=BoolToSelectionBrushConverter}" 
                               HorizontalAlignment="Right" 
                               Margin="0" Width="25" 
                               Height="25" VerticalAlignment="Top" 
                               StrokeThickness="0"/>

答案 1 :(得分:2)

您可以使用:

<Rectangle Fill="{Binding .,Converter=BoolToSelectionBrushConverter}"... />