1

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

<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>
4

2 回答 2

3

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

    <Rectangle Fill="{Binding BindsDirectlyToSource=True,
                              Converter=BoolToSelectionBrushConverter}" 
                               HorizontalAlignment="Right" 
                               Margin="0" Width="25" 
                               Height="25" VerticalAlignment="Top" 
                               StrokeThickness="0"/>
于 2012-05-14T13:04:58.410 回答
2

你可以使用这个:

<Rectangle Fill="{Binding .,Converter=BoolToSelectionBrushConverter}"... />
于 2012-05-14T13:05:04.427 回答