2016-03-29 14 views
-1

はXMLSerializerを使用して生成されたXMLであり、プロパティグリッドのプロパティがあります。私がしたいのは、[browsable(false)]を使ってコードを変更するのではなく、プロパティを隠すことができるようにXMLファイルの内容を編集することです。たとえば、名前、ID、モード、電子メールの4つのプロパティがあり、XMLファイルでコンテンツを編集して名前を非表示にしたいとします。これを達成するために私は何をすべきですか?XMLでPropertyGidのプロパティを非表示にするにはどうすればよいですか?

<?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">[email protected]</Email> 
 
</Person>

+1

[ "?タイトルに『タグ』の質問には、すべき"]を参照してください(http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles)、コンセンサスは「いいえ、彼らはすべきではありません」です! –

+0

私はあなたが欲しいものを理解していませんでした、xmlの "プロパティ"はどういう意味ですか?説明するための例を貼り付けてください。 –

+1

XMLには、プロパティ/属性の可視性に関する固有の知識はありません。あなたは本当にXMLか、むしろXAMLについて話していますか? –

答えて

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

のViewModel:

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"); 
     } 
    } 
} 

あなたがコードであなたのButtonVisibilityを変更したい場合は、ViewModelにこのコードでそれを行うことができます。

ShowButton = false; 

コードビハインドアプローチを使用する場合:

XAML:

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

コードビハインド:

//read xml file 
if(...your logic here...) 
    btn.Visibitity= System.Windows.Visibility.Visible; 
+0

お返事ありがとうございます、申し訳ありませんが、私の質問で誤解してください。これらをXMLで編集することは可能ですか? – junxiong

+0

@junxiongええ、ちょうどあなたのXMLファイルを読んで、あなたがMVVMのアプローチを使用する場合は、 'ShowButton'プロパティの中でxmlから取得した値を使用してください。コードビハインドアプローチを使用する場合は、最初にxmlから値を読み込み、「コントロール」を表示するかどうかのロジックを記述する必要があります。 – StepUp

+0

しかし、私はまだ最初に値を読み取ってから、コードのロジックだけを書く必要がありますか?私がしたいのは、プロパティのブール値を持つようなものなので、XMLファイルでtrueまたはfalseを変更できます。真の場合、プロパティは非表示になります。このようなもの。 – junxiong

関連する問題