2012-10-30 22 views
8

Saatlerdir arıyordum ve sadece bunun için sağlam bir cevap bulmak için görünmüyor olabilir. İçeriği, harici verileri kullanarak metni düzenlemem gereken içerik denetimleriyle var. Kontrollerden biri için veri mevcut değilse, metni uygun bir bildirimle değiştirmem ve yazı tipi rengini değiştirmem gerekiyor.Değişim font color

Ben sadece iyi metin girişi ve bütün bu çalışma, onun işi tipi rengini değiştiriyor yapmak gibi gözükmüyor sadece bir kısmını var. Şu an kullandığım kod bana herhangi bir hata vermiyor ve bu yöntemle gayet iyi çalışıyor, ancak bitmiş belgeye baktığımda hala sade siyah metin.

Rengim değişiyor yöntemi: aşağı sadece bu kadar bu iki satır basitleştirerek/aynı etkiye sahiptir Ayrıca

public void SetBlueText(List<SdtElement> sdtElement) 
{ 
    foreach (SdtElement element in sdtElement) 
    { 
     if (element != null) 
     { 
      RunProperties runProperties = element.Descendants<RunProperties>().FirstOrDefault(); 
      runProperties.Color = new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = "0EBFE9" }; 
     } 
    } 
} 

, (giriş aynı etiketine sahip tüm içerik kontrolleri listesidir)

element.Descendants<RunProperties>().FirstOrDefault().Color = 
         new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = "0EBFE9" }; 

cevap

9

Benzer konularla karşılaştım ve bazı nedenlerden dolayı RunProperties nesnesine nesne eklediğiniz sırasının biçimlendirme güncelleştirmesinin çalışıp çalışmadığını etkilediğini fark ettim (Farkettiğim kalıp, önce metin ekliyorsanız) biçimlendirmeniz, bu metnin biçimlendirmesi yapmaz.

örn. Bu işleri (metin kalın, Cambria Başlıklar hale gelir ve renk mavi olarak ayarlanır)

Run formattedRun = new Run(); 
RunProperties runPro = new RunProperties(); 
RunFonts runFont = new RunFonts() { Ascii = "Cambria(Headings)", HighAnsi = "Cambria(Headings)" }; 
Bold bold = new Bold(); 
Text text = new Text("TESTING"); 
Color color = new Color() { Val = "365F91", ThemeColor = ThemeColorValues.Accent1, ThemeShade = "BF" }; 
runPro.Append(runFont); 
runPro.Append(bold); 
runPro.Append(color); 
runPro.Append(text); 
formattedRun.Append(runPro); 

ama bu değil (metin Cambria Başlıklar ve Kalın olur, ancak siyah renk standart kalır)

Run formattedRun = new Run(); 
RunProperties runPro = new RunProperties(); 
RunFonts runFont = new RunFonts() { Ascii = "Cambria(Headings)", HighAnsi = "Cambria(Headings)" }; 
Text text = new Text("TESTING"); 
Bold bold = new Bold(); 
Color color = new Color() { Val = "365F91", ThemeColor = ThemeColorValues.Accent1, ThemeShade = "BF" }; 
runPro.Append(runFont); 
runPro.Append(bold); 
runPro.Append(text); 
runPro.Append(color); 
formattedRun.Append(runPro); 
4

Eh, ben tür kaba yanıta yolumu zorladı ama işe yarıyor.

List<RunProperties> runProps = element.Descendants<RunProperties>().ToList(); 
foreach (RunProperties rp in runProps) 
{ 
    rp.Color = new DocumentFormat.OpenXml.Wordprocessing.Color() { Val = "0EBFE9" }; 
} 

Herhangi biri daha zarif bir çözüme sahipse, lütfen onu ekleyin ve tekrar yazalım.

0

Renk val 8 basamaklı olmalıdır. Örneğin, Color.Val = "FFFF0000" görüntü dizesi kırmızı renktedir.