2010-11-02 56 views
0

我有一個網格,它從Web服務中取回信息。 第3列現在有時會有一個值「STP Customer」,它應該有一個超級鏈接,並且該列中的其他數據沒有超鏈接。Silverlight 3,如何基於條件渲染datagrid行單元格中的linkbutton?

如何渲染條件上的超鏈接?

僞代碼:

void onRenderCell(object sender, RoutedEventArgs e) 
{ 
    if (sender is DataGridTemplateColumn && e.Cell.Data.Value == "STP Customer") 
    { 
     e.Cell.Text.Add(new Hyperlink(name="STP Customer", link="/StpCustomer.aspx?id=1"); 
    } 
} 

再次,這是僞 - 我不知道希望它傳達什麼樣的代碼:) 但我想實現。

回答

1

使用列表的自定義綁定到您的代碼。 例如,採取和提起像,說,字符串HyperLinkNaviagtion

當您從服務中獲得價值,然後分配列表網格之前,分配HyperLinkNaviagtion一定的價值一樣,

if(SomeCondition) 
{ 
    // Navigate to Google. 
    HyperLinkNaviagtion ="www.google.com"; 
} 
else 
{ 
    // Navigate to Yahoo. 
    HyperLinkNaviagtion ="www.yahoo.com"; 
} 

和XAML,做到以下幾點。

NavigateUri="{Binding HyperLinkNaviagtion }" 

如果您需要更多信息,請告訴我。

+0

感謝您的迴應,我與此同時:我在DataTemplate的xaml中放置了一個StackPanel,然後在其中放置了一個textBlock和一個超鏈接按鈕。我將可見性設置爲'摺疊',將超鏈接按鈕的可見性設置爲可見。我將這些綁定到一個模型上,當我需要的時候,我可以調用model.SetSpecialCustomer(true)或者其他的東西。無論如何,感謝您的幫助。 – 2010-11-03 22:26:02

+0

如果這有用,請標記爲答案。 – Singleton 2010-11-04 06:57:11