Veri bağlama yoluyla bir WPF Köprüsünün metnini nasıl ayarlayabilirim?


129

WPF'de, bir nesnenin ayrıntılarına giden bir köprü oluşturmak istiyorum ve köprünün metninin nesnenin adı olmasını istiyorum. Şu anda şuna sahibim:

<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">Object Name</Hyperlink></TextBlock>

Ama ben "Nesne Adı" nın nesnenin gerçek adına bağlı olmasını istiyorum. Bunun gibi bir şey yapmak istiyorum:

<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}" Text="{Binding Path=Name}"/></TextBlock>

Ancak, Hyperlink sınıfının veri bağlama için uygun bir metin veya içerik özelliği (yani, bir bağımlılık özelliği) yoktur.

Herhangi bir fikir?

Yanıtlar:


212

Garip görünüyor ama işe yarıyor. Bunu uygulamamızda yaklaşık 20 farklı yerde yapıyoruz. "içeriğine" metin koyarsanız, Hyperlinkörtük olarak bir oluşturur <Run/>, ancak .NET <Run/>3.5'te ona bağlanmanıza izin vermez, bu nedenle açıkça bir TextBlock.

<TextBlock>
    <Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">
        <TextBlock Text="{Binding Path=Name}"/>
    </Hyperlink>
</TextBlock>

Güncelleştirme : .NET 4.0'dan itibaren Run.Text özelliğinin artık bağlanabileceğini unutmayın:

<Run Text="{Binding Path=Name}" />

Peki bu, bir Köprünün içerik özelliğinin Satır içi koleksiyon olduğu anlamına mı geliyor?
Mal Ross

4
Sadece ben miyim yoksa bu bağlantının gerçekten çalışmasını engelliyor mu?
Tobias Valinski

Hala RequestNavigate işlemek gerekir
ruloları

11

Bu benim için bir "Sayfa" da çalıştı.

<TextBlock>
    <Hyperlink NavigateUri="{Binding Path}">
        <TextBlock Text="{Binding Path=Path}" />
    </Hyperlink>
</TextBlock>

1

Windows Mağazası uygulamasında (ve Windows Phone 8.1 RT uygulaması) yukarıdaki örnek çalışmaz, HyperlinkButton kullanın ve her zamanki gibi Content ve NavigateUri özelliklerini bağlayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.