SORU
15 NİSAN 2009, ÇARŞAMBA


Nasıl içerik ADINDA bir WPF UserControl oluşturmak için

Sürekli aynı şekilde tekrar eklenmiş komutları ve mantık ile kontrolleri bir dizi var. Tüm ortak denetimler ve mantık içeren bir kullanıcı denetimi oluşturma kararı aldı.

Ancak ben de adlandırılabilir içeriği edebilmek için kontrol gerekir. Aşağıdaki denedim

<UserControl.ContentTemplate>
    <DataTemplate>
        <Button>a reused button</Button>
        <ContentPresenter Content="{TemplateBinding Content}"/>
        <Button>a reused button</Button>
    </DataTemplate>
</UserControl.ContentTemplate>

Ancak her içerik, kullanıcı içine yerleştirilmiş olarak adlandırılamaz kontrol gibi görünüyor. Örneğin şu şekilde: kontrol kullanırsam

<lib:UserControl1>
     <Button Name="buttonName">content</Button>
</lib:UserControl1>

Aşağıdaki hatayı alıyorum:

Adı öznitelik değeri 'buttonName' eleman'. Düğmesi ''Düğmesi unsur kapsamı altında 'UserControl1' zaten vardı adı tanımlı olduğu zaman kayıtlı başka bir kapsam.

Ben buttonName kaldırırsanız, o zaman derler, ancak içerik edebilmek için ihtiyacım var. Bunu nasıl başarabilir?

CEVAP
16 NİSAN 2009, PERŞEMBE


Bu XAML kullanıldığında mümkün değil gibi görünüyor. Özel denetimler aslında ihtiyacım olan tüm kontroller bir overkill gibi görünüyor, ama onları bir araya mantık küçük bir bit ile grup ve içerik adında izin ver sadece.

Mackenir anlaşılacağı gibi JD's blog çözüm, iyi bir uzlaşma var gibi görünüyor. JD'NİN kontroller hala XAML içinde tanımlanan izin vermek için çözüm genişletmek için bir yol aşağıdaki gibi olabilir

    protected override void OnInitialized(EventArgs e)
    {
        base.OnInitialized(e);

        var grid = new Grid();
        var content = new ContentPresenter
                          {
                              Content = Content
                          };

        var userControl = new UserControlDefinedInXAML();
        userControl.aStackPanel.Children.Add(content);

        grid.Children.Add(userControl);
        Content = grid;           
    }

Benim yukarıdaki örnekte herhangi bir normal kullanıcı denetimleri gibi tanımlamak olan bir kullanıcı denetimi UserControlDefinedİnXAML adlı XAML kullanarak oluşturduk. Benim UserControlDefinedİnXAML içinde, içinde görünmesini adlı içeriğim istiyorum bir StackPanel aStackPanel aradım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chickenby

    chickenby

    2 HAZİRAN 2008
  • Matt Davis

    Matt Davis

    4 ŞUBAT 2006
  • parlophone

    parlophone

    28 ŞUBAT 2006