2010-05-27 6 views
10

AutomationProperties.Name özelliği XAML ile programlı ve bildirimli nasıl kullanıldığınıAutomationProperties.Name nasıl kullanılır?

kimse (tercihen bir kod örneği ile birlikte) lütfen açıklayabilir Soru?

Açıklama

Ben Kodlu UI Builder Visual Studio 2010, örneğin, SearchProperty gibi bir Pencere adını alır anlıyoruz.

Penceremin adı değiştiğinden, Kodlanmış UI Testlerimin güvenebileceği sabit bir SearchProperty'ye sahip olmak isterim.

Aşağıdaki kod örneğinde, pencere başlığının bu değişimlerden sonra "Boru 1 Özellikleri" olarak kodlanmasını istemiyorum.

Kod örneği

[GeneratedCode("Coded UITest Builder", "10.0.30319.1")] 
public class UIListViewPropertiesTable1 : WpfTable 
{ 

    public UIListViewPropertiesTable1(UITestControl searchLimitContainer) : 
      base(searchLimitContainer) 
    { 
     #region Search Criteria 
     this.SearchProperties[WpfTable.PropertyNames.AutomationId] = "listViewProperties"; 
     this.WindowTitles.Add("Properties of Pipe 1"); 
     #endregion 
    } 

    #region Properties 
    public WpfText NameOfComponent 
    { 
     get 
     { 
      if ((this.mNameOfComponent == null)) 
      { 
       this.mNameOfComponent = new WpfText(this); 
       #region Search Criteria 
       this.mNameOfComponent.SearchProperties[WpfText.PropertyNames.Name] = "Pipe 1"; 
       this.mNameOfComponent.WindowTitles.Add("Properties of Pipe 1"); 
       #endregion 
      } 
      return this.mNameOfComponent; 
     } 
    } 
    #endregion 

    #region Fields 
    private WpfText mNameOfComponent; 
    #endregion 
} 

Linkler Burada

bir örnek: How To: Get automation working properly on data bound WPF list or combo box. Pencere için uyarlayamadım.

+1

AutomationProperties.Name x arasındaki deference: Adı AutomationProperties.Name Eğer WVVM deseni kullanırken bu gerçekten çok iyi bir size VM otomasyon özelliklerini ekleyip View bağlamak ne databinded edilebilir olmasıdır . Test oluşturucuyu kullanmadığınız UIMap'inizi oluşturun.Bu size daha kontrollü bir harita verecektir. Bunu gösteren ve blog'umda yayınlayan küçük bir örnek oluşturmayı umuyorum. Yapacağım zaman ona bir link vereceğim. – CoffeeCode

cevap

11

kullanarak ekli özelliği AutomationProperties.Name ya XAML değiştirebilirsiniz:

AutomationProperties.Name = "yeni adı"

veya kodunda

kullanarak:

Button.SetValue (AutomationProperties.NameProperty, "yeni değer");
veya
AutomationProperties.SetName (Düğme, "yeni değer");

0

Bu konuda çalışmanın bir yolu var ama biraz çirkin.

Pencereye yapılan başvuruyu içeren itirafın önbelleğe alındığını ve her seferinde bakılmadığını kullanıyor olacağız.

uimap sınıfı kısmi bir sınıftır ve uimap.cs dosyasında, uimap sınıfının bir parçası olarak sayılan kodunuz olabilir.

Burada, pencere başlığını parametre olarak kabul eden ve arama işlemini gerçekleştiren ve bulunan kodu oluşturulan kodun UIListViewPropertiesTable1 özelliğine koyan bir yöntem ekleyin.

1

Pencere Başlığı parametresini üst öğeye geçirebilir ve başlatırken bu parametreyi ayarlayabilirsiniz.

Bu şekilde yapıyorum ve iyi çalışıyor.