Xaml页面创建模板控件,绑定颜色关键字
<Window.Resources>
<!--创建颜色关键字-->
<local:DataColorConverter x:Key="DataColorConverterStyle"/>
<!--创建控件模板-->
<DataTemplate x:Key="ColorBall">
<Button Width="40" Height="40" IsEnabled="False" Style="{DynamicResource MetroCircleButtonStyle}" Name="BT_ColorBall" Background="{Binding Path=ColorValue, Converter={StaticResource DataColorConverterStyle}}">
<Rectangle Width="15" Height="15" Fill="{Binding Path=Background, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}">
<Rectangle.OpacityMask>
<VisualBrush Stretch="Fill" Visual="{DynamicResource appbar_city}" />
</Rectangle.OpacityMask>
</Rectangle>
</Button>
</DataTemplate>
</Window.Resources>
调用模板控件
<ListView x:Name="ServiceList">
<ListView.View>
<GridView>
<!--绑定模板控件-->
<GridViewColumn Width="50" CellTemplate="{StaticResource ColorBall}"></GridViewColumn>
<GridViewColumn Header="Name" Width="200" DisplayMemberBinding="{Binding Name}"></GridViewColumn>
<GridViewColumn Header="Status" Width="80" DisplayMemberBinding="{Binding Status}"></GridViewColumn>
<GridViewColumn Header="Log On As" Width="120" DisplayMemberBinding="{Binding LogOnAs}"></GridViewColumn>
<GridViewColumn Header="Depends On" Width="120" DisplayMemberBinding="{Binding DependingOn}"></GridViewColumn>
<GridViewColumn Header="Description" Width="500" DisplayMemberBinding="{Binding Description}"></GridViewColumn>
</GridView>
</ListView.View>
</ListView>
C# 定义转换模式,当listview中当colorvalue值被 “Background="{Binding Path=ColorValue,” 绑定,作为Convert方法第一个参数Value的值,需要强制转换类型后做判断。
///// 定义转换器
[ValueConversion(typeof(string), typeof(SolidColorBrush))]
public class DataColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if ((string)value == "0")
{
return new SolidColorBrush(Colors.Red);
}
if ((string)value == "1")
{
return new SolidColorBrush(Colors.Yellow);
}
if((string)value == "2")
{
return new SolidColorBrush(Colors.Green);
}
return new SolidColorBrush(Colors.Red);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
3万+

被折叠的 条评论
为什么被折叠?



