Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IsChecked设置为false_C#_Xml_Wpf - Fatal编程技术网

C# IsChecked设置为false

C# IsChecked设置为false,c#,xml,wpf,C#,Xml,Wpf,在上周搜索和尝试了几个选项之后,我似乎找不到我想要的;也许这里有人可以帮忙。在阅读本文的同时,请记住,我正试图尽可能严格地使用MVVM,尽管我对WPF还比较陌生。作为旁注,我正在使用Mahapps.Metro来设计我的窗口和控件 我有一个应用程序用于配置的XML文件。我无法使用app.config文件,因为该应用程序无法安装在用户的系统上。应用程序将在启动时查找此文件,如果找不到该文件,将创建它。下面是XML的一个片段: <?xml version="1.0" encoding="utf-

在上周搜索和尝试了几个选项之后,我似乎找不到我想要的;也许这里有人可以帮忙。在阅读本文的同时,请记住,我正试图尽可能严格地使用MVVM,尽管我对WPF还比较陌生。作为旁注,我正在使用Mahapps.Metro来设计我的窗口和控件

我有一个应用程序用于配置的XML文件。我无法使用app.config文件,因为该应用程序无法安装在用户的系统上。应用程序将在启动时查找此文件,如果找不到该文件,将创建它。下面是XML的一个片段:

<?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}}" />