ValueConverter转换器WPF
- 属性搭桥 比如BoolToVisibility 创建两个属性 Bool Visibility 这样不好 混乱了viewmodels 降低了泛用性
- 系统自带的convertor
<Window.Resources><BooleanToVisibilityConverter x:Key="booltovis"></BooleanToVisibilityConverter></Window.Resources> //resurce<TextBlock Visibility="{Binding ElementName=tg1, Path=IsChecked,Converter={StaticResource booltovis},ConverterParameter=Hidden }" TextAlignment="Center">test vis</TextBlock>//convertor StaticResource
做不到翻转 做不到flase状态自定义
命名空间只要细到文件夹 不需要到文件、
自己写Converter
- 创建Converters文件夹 在根目录
- 多次在window.Resources里面声明是很麻烦的 Converter可以考虑放在 App.xaml的资源字典里面
ConverterParameter=Hidden 还是不建议写属性 建议写在Parameter里面 写成属性的话就不能单独设置了
<!-- App.xaml --> <Application.Resources><ResourceDictionary><converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter"/><converters:StringToColorConverter x:Key="StringToColorConverter"/></ResourceDictionary> </Application.Resources>
if(value is string path && File.Exists(path)
{
return path;
}
return Binding.DoNothing;
(这个的意思就相当于 如果绑定的数据类型或者因为某些原因不对的话 那ui 会保持原有 (正常情况下 ui会啥东西都不显示)
culture.TwoLetterISOLanguageName = "en"
="ch"
converter用这个判断语言类型