我正在使用MVVM模式。我已經綁定了我的項目,並且只想在數據網格中選擇一行時顯示編輯按鈕。 WPF中的觸發器似乎是可能的,但我們在Silverlight中沒有觸發器。我嘗試了一個TemplatedParent綁定,但我不確定在這種情況下TemplatedParent是什麼。我們在Silverlight中也沒有RelativeSource祖先。在這一點上,我要看看使用後面的代碼的解決方案...如何在Silverlight數據網格中選擇一行時更改DataTemplate中元素的可見性?
<data:DataGrid.Columns>
<data:DataGridTemplateColumn IsReadOnly="True" Header="Name" Width="300">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock x:Name="textBlock" Text="{Binding Name, Mode=OneWay}" VerticalAlignment="Center" Margin="4,4,0,4"/>
<Button Margin="1,1,4,1" HorizontalAlignment="Right" VerticalAlignment="Center" Padding="7,4" Content="Edit" />
</Grid>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
我走了類似於選項1的東西。我添加了一個IsSelected屬性到我的項目viewmodel(我有一個項目PagedCollectionView)。我使用SelectionChanged事件遍歷e.RemovedItems並清除選定的標誌。 e.AddedItems也一樣。我可能會考慮將SelectedItem添加到我的主視圖模型中。如果有人走這條路線,我認爲最簡單的方法是清除舊項目上SelectedItem的setter標誌並在新的SelectedItem上設置標誌。 – miketrash 2010-03-24 22:11:23