如何在XML中隐藏PropertyGid的属性?

时间:2016-03-29 07:44:29

标签: c# xml wpf propertygrid

下面是我使用XMLSerializer生成的XML,还有propertygrid的属性。我想要做的是编辑XML文件中的内容,以便隐藏属性,而不是使用[browsable(false)]更改代码。例如,有Name,ID,Mode和email,这4个属性,我想通过编辑XML文件中的内容来隐藏Name。我该怎么做才能做到这一点?



<?xml version="1.0" encoding="utf-8" ?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name xsi:type="xsd:string">Hello</Name>
  <ID xsi:type="xsd:string">1132701760</ID>
  <Mode xsi:type="xsd:string">burst</Mode>
  <Email xsi:type="xsd:string">junxiong1995@hotmail.com</Email>
</Person>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

MVVM方法:

基本上它是由.Net BooleanToVisibilityConverter中的内置类实现的:

<UserControl.Resources>
    <BooleanToVisibilityConverter x:Key="booleanVisibilityConverter"/>
</UserControl.Resources>

让我展示工作示例:

XAML:

<UserControl.Resources>
    <BooleanToVisibilityConverter x:Key="booleanVisibilityConverter"/>
</UserControl.Resources>
...
<Button Content="Hello, I am the button" Visibility="{Binding ShowButton, 
                Converter={StaticResource booleanVisibilityConverter}}"/>

视图模型:

private bool _showButton = false;
public bool ShowButton
{
   get { 
         //you can write logic here to get values from XML
         return _showButton; 
   }
   set
   {
      if (value != _showButton)
      {
         //you can write logic here to get values from XML
         _showButton = value;
         OnPropertyChanged("ShowButton");
      }
   }
}

如果您想更改代码中Visibility的{​​{1}},可以通过ViewModel中的此代码进行设置:

Button

如果您使用代码隐藏方法:

XAML:

ShowButton = false;

代码隐藏:

<Button Content="Hello, I am the button" Name="btn"/>