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

本文关键字:绑定 布尔值 列表 未命名 使用 DataTemplate 可视化 | 更新日期: 2023-09-27 18:34:09

我有一个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>

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

我目前没有方便的

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

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

你可以使用这个:

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