[WPF] MaterialDesignConverter
MaterialDesignConverter
[ValueConversion(typeof(string),typeof(MaterialDesignThemes.Wpf.PackIconKind))] public class MaterialDesignConverter : IValueConverter { public static MaterialDesignConverter Instance = new MaterialDesignConverter(); public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { switch ((string)value) { case "Home": return MaterialDesignThemes.Wpf.PackIconKind.Home; case "Report": return MaterialDesignThemes.Wpf.PackIconKind.ReportBar; case "User": return MaterialDesignThemes.Wpf.PackIconKind.TicketUser; case "Library": return MaterialDesignThemes.Wpf.PackIconKind.Library; case "Music": return MaterialDesignThemes.Wpf.PackIconKind.Music; default: return null; } } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }
RootView.xaml
<RadioButton Content="Home" BorderThickness="0" Height="50" Foreground="White" FontSize="14" IsChecked="True" Grid.Row="0" Style="{StaticResource RadioButtonTheme}" /> <RadioButton Content="Report" BorderThickness="0" Height="50" Foreground="White" FontSize="14" Grid.Row="1" IsChecked="False" Style="{StaticResource RadioButtonTheme}"/> <RadioButton Content="User" BorderThickness="0" Height="50" Foreground="White" FontSize="14" Grid.Row="2" IsChecked="False" Style="{StaticResource RadioButtonTheme}"/> <RadioButton Content="Library" BorderThickness="0" Height="50" Foreground="White" FontSize="14" Grid.Row="3" IsChecked="False" Style="{StaticResource RadioButtonTheme}"/> <RadioButton Content="Music" BorderThickness="0" Height="50" Foreground="White" FontSize="14" Grid.Row="4" IsChecked="False" Style="{StaticResource RadioButtonTheme}"/>
style.xaml
<Style TargetType="{x:Type RadioButton}" x:Key="RadioButtonTheme" > <Style.Setters> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="RadioButton"> <DockPanel LastChildFill="True"> <TextBlock x:Name="txtBlock" Width="15" HorizontalAlignment="Left"></TextBlock> <StackPanel Orientation="Horizontal" Background="{TemplateBinding Background}"> <materialDesign:PackIcon Kind="{TemplateBinding Property=Content, Converter={x:Static local:MaterialDesignConverter.Instance}}" Width="25" Height="25" VerticalAlignment="Center" /> <TextBlock Text="{TemplateBinding Property=Content}" VerticalAlignment="Center" Margin="25,0,0,0"></TextBlock> </StackPanel> </DockPanel> <ControlTemplate.Triggers> <Trigger Property="IsChecked" Value="True"> <Setter TargetName="txtBlock" Property="Background" Value="#BF1B3B"/> <Setter Property="Background" Value="#322f30"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> <Setter Property="Background" Value="Transparent"/> </Style.Setters> </Style>
分类:
个人记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现