2016-03-29 20 views
-1

aşağıda XMLSerializer kullanılarak oluşturulan XML'mdir ve propertygrid'in özellikleri vardır. Yapmak istediğim, XML dosyasında içeriği düzenlemek, böylece [browsable (false)] kullanarak kodu değiştirmek yerine, mülkün gizlenmesidir. Örneğin, İsim, Kimlik, Mod ve e-posta, bu 4 özellik vardır ve içeriği XML dosyasında düzenleyerek sonra saklamak istiyorum. Bunu başarmak için ne yapmalıyım?XML'de PropertyGid özelliğini nasıl gizleyebilirim?

<?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

bakınız [ "? Başlıklarında‘etiketleri’Meli sorular şunlardır"] (http://meta.stackexchange.com/soruları/19190/olmalıdır-sorular-dahil-onların-başlıkları), nerede fikir birliği "hayır, onlar olmamalıdır"! –

+0

Ne istediğini anlamadım, xml'de "property" ile ne demek istiyorsun? açıklamak için bir örnek ekleyebilir misiniz lütfen? –

+1

XML'in özellikleri/öznitelikleri hakkında herhangi bir içsel bilgi bilgisi yoktur ... XML'den mi yoksa XAML'den mi bahsediyorsunuz? –

cevap

2

MVVM yaklaşım:

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

bana iş örneğini gösterelim: built-in sınıfında .NET BooleanToVisibilityConverter yılında tarafından uygular Temelde

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

kodda sizin Button arasında Visibility değiştirmek isterseniz, ViewModel bu kodla yapabilirsiniz:

ShowButton = false; 

Kod arkasında bir yaklaşım kullanırsanız:

XAML:

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

kod arkadaki:

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

Cevabınız için teşekkür ederim, sorumu yanlış anladığın için üzgünüm. XML'de düzenleme yapmak mümkün mü? – junxiong

+0

@junxiong evet, MVVM yaklaşımını kullanırsanız, xml dosyanızı okuyun ve alınan değeri "ShowButton" özelliğindeki xml'den kullanın. Eğer arkadan kodlama yaklaşımını kullanırsanız, önce xml değerlerini okumalısınız, daha sonra 'Kontrollerinizin' gösterilip gösterilmeyeceği mantığını yazmalısınız. – StepUp

+0

Ama yine de önce değerleri okumalıyım, sonra sadece mantığı kodda yazmalı mıyım?çünkü yapmak istediğim şey, özellik için bir boolean değere sahip olduğumuz gibi, doğru veya yanlış XML dosyasında değiştirebiliyorum, eğer doğruysa, özellik gizlenecektir. Böyle bir şey. – junxiong

İlgili konular