mit*_*mit 1 c# data-binding wpf xaml
我对 WPF 真的很陌生,我正在制作一个包含矩形和信息的图例。 这是传奇的一个例子
这是 xmal
<ItemsControl Name="icColorInfo" ItemsSource="{Binding m_legendInfo}"
BorderBrush="DarkBlue" BorderThickness="2">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="2,2,2,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="0" Height="25" Width="30" Fill="{Binding Color}"></Rectangle>
<TextBlock Grid.Column="1" Text="{Binding Info}"></TextBlock>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
矩形填充绑定到我的图例类的颜色属性,文本块绑定到信息属性
现在我想要做的是,如果图例“信息”条目等于“空”,我希望矩形有一个虚线边框(也许设置 Stroke 属性或其他东西)
如何绑定到特定项目而不影响其他项目?
一个简单DataTrigger的ItemTemplate可以为你做到这一点:
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Margin="2,2,2,2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Rectangle x:Name="rect" Height="25" Width="30" Fill="{Binding Color}" />
<TextBlock Grid.Column="1" Text="{Binding Info}" />
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Info}" Value="">
<Setter TargetName="rect" Property="StrokeThickness" Value="1" />
<Setter TargetName="rect" Property="Stroke" Value="Black" />
<Setter TargetName="rect" Property="StrokeDashArray" Value="2 2" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
您可以调整笔触画笔、粗细和虚线阵列,直到它看起来适合您。笔划破折号数组被编码为一对序列:破折号的长度后跟空格的长度。您可以随心所欲地包含任意数量,但对于简单的虚线或点线图案,您只需要一对即可。
请注意,您通常不应硬编码颜色和画笔。对于Stroke,我建议您使用{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}或类似的东西。
| 归档时间: |
|
| 查看次数: |
3227 次 |
| 最近记录: |