C# IsChecked设置为false
在上周搜索和尝试了几个选项之后,我似乎找不到我想要的;也许这里有人可以帮忙。在阅读本文的同时,请记住,我正试图尽可能严格地使用MVVM,尽管我对WPF还比较陌生。作为旁注,我正在使用Mahapps.Metro来设计我的窗口和控件 我有一个应用程序用于配置的XML文件。我无法使用app.config文件,因为该应用程序无法安装在用户的系统上。应用程序将在启动时查找此文件,如果找不到该文件,将创建它。下面是XML的一个片段:C# IsChecked设置为false,c#,xml,wpf,C#,Xml,Wpf,在上周搜索和尝试了几个选项之后,我似乎找不到我想要的;也许这里有人可以帮忙。在阅读本文的同时,请记住,我正试图尽可能严格地使用MVVM,尽管我对WPF还比较陌生。作为旁注,我正在使用Mahapps.Metro来设计我的窗口和控件 我有一个应用程序用于配置的XML文件。我无法使用app.config文件,因为该应用程序无法安装在用户的系统上。应用程序将在启动时查找此文件,如果找不到该文件,将创建它。下面是XML的一个片段: <?xml version="1.0" encoding="utf-
<?xml version="1.0" encoding="utf-8"?>
<prefRoot>
<tabReport>
<cbCritical>True</cbCritical>
</tabReport>
并将其用作我的主窗口的数据上下文:
最后,我将IsChecked绑定到适当的XPath:
所有这些之后,应用程序将加载,但IsChecked设置为false。。。任何和所有的想法在这里都会有帮助;提前谢谢 有两件事:
您的转换器最好在默认情况下不返回null而返回false。如果转换因任何原因失败,请返回实际值。
code bool?值不会将字符串转换为布尔值。将其更改为:
return value.ToLower==true。您的方法应该返回对象而不是直接bool或字符串吗?您是否在参考资料部分包含了转换器?XML bool到字符串MVVM的应用程序级转换器是如何实现的?应用程序不应该知道任何有关数据存储方式的信息。
<Controls:MetroWindow.Resources>
<XmlDataProvider x:Key="XmlConfig"
Source="%appdata%\Vulnerator\Vulnerator_Config.xml"
XPath="prefRoot"
IsAsynchronous="False"
IsInitialLoadEnabled="True"/>
</Controls:MetroWindow.Resources>
<Controls:MetroWindow DataContext="{DynamicResource XmlConfig}">
class StringToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
bool? isChecked = (bool?)value;
return isChecked;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
string isChecked = value.ToString();
return isChecked;
}
return string.Empty;
}
}
<Checkbox x:Name="cbCritical"
Content="Critical"
IsChecked="{Binding XPath=//tabReport/cbCritical,
Converter={StaticResource StringToBool}}" />