<Grid Grid.Row="1" Width="500" Height="500">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Ellipse Fill="Red" HorizontalAlignment="Center" Height="25" Margin="0,0,0,0" Stroke="Black" VerticalAlignment="Center" Width="25"/>
<Ellipse Fill="Red" HorizontalAlignment="Center" Height="25" Margin="0,0,0,0" Stroke="Black" VerticalAlignment="Center" Width="25" Grid.Row="1"/>
<Ellipse Fill="Red" HorizontalAlignment="Center" Height="25" Margin="0,0,0,0" Stroke="Black" VerticalAlignment="Center" Width="25" Grid.Row="3"/>
<Ellipse Fill="Red" HorizontalAlignment="Center" Height="25" Margin="0,0,0,0" Stroke="Black" VerticalAlignment="Center" Width="25" Grid.Column="4"/>
<Ellipse Fill="Red" HorizontalAlignment="Center" Height="25" Margin="0,0,0,0" Stroke="Black" VerticalAlignment="Center" Width="25" Grid.Column="4" Grid.Row="4"/>
</Grid>
鉴于上述XAML,我希望当属性为true时,点为绿色。我假设我会用DataTrigger做到这一点,但我可以想到的唯一方法就是将其复制到每个椭圆上。这对我来说似乎很难受,并且怀疑他们是否是更好的解决方案。每个椭圆都基于一个属性,但是它又像是很多重复的代码。理想情况下,我想要的是这个视图使用布尔值来反映“站”列表的状态,以确定它们是否可用。每个视图的状态都是单向的,在视图启动时不会改变。根据布尔值更改椭圆的颜色
我对WPF和XAML的新手提出了一个优雅的解决方案。每次我尝试一些东西时,我都会畏缩,因为它看起来像是一个彻头彻尾的黑客。
编辑: 感谢@ Alastair的回答,我已经得到它的工作。
那么你会显示这些电台的列表?例如。彩色的圆圈又是他们的名字? – 2013-04-22 03:34:21
没有。想象它更像一个地图传说。每个椭圆代表平面图上的一个亭子。 – 2013-04-22 03:39:07
我看到你的内部用户控件中有一个椭圆。你的外部UserControl的DataContext是否有一个IsAvailable属性? – failedprogramming 2013-04-22 06:14:55