這是可能的,但我不認爲這是正確的解決方案。
您可以處理DataGrid中的代碼隱藏,其中在處理程序,你可以寫下面的代碼事件之一:
BindingOperations.SetBinding(textBlock, TextBlock.TextProperty,
new Binding("SelectedItem.Name")
{
ElementName = "DataGrid1"
});
基本上你重置將TextBlock的Text屬性綁定使用此代碼,其中:
如果DataGrid1中激發你的ElementName設置爲DataGrid的名字的情況下,如果DataGrid2觸發事件,那麼你的的ElementName設置爲第二DataGrid的名字。
SelectionChanged可以處理DataGrid上的一個好事件,但是如果您希望TextBlock在您選擇時更新並在第一個元素中進行更新,然後在第二個元素中選擇另一個,然後再單擊回到第一個元素進行更新您還需要處理GotFocus事件。 和它一起玩,你會明白我的意思。
我的工作例如:
private void SetBindingOnTextBlock(string elementName)
{
BindingOperations.SetBinding(textBlock, TextBlock.TextProperty, new Binding("SelectedItem.Name")
{
ElementName = elementName
});
}
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
SetBindingOnTextBlock("DataGrid1");
}
private void DataGrid_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
SetBindingOnTextBlock("DataGrid2");
}
private void DataGrid1_GotFocus(object sender, RoutedEventArgs e)
{
SetBindingOnTextBlock("DataGrid1");
}
private void DataGrid2_GotFocus(object sender, RoutedEventArgs e)
{
SetBindingOnTextBlock("DataGrid2");
}
更新1:
設置
IsSynchronizedWithCurrentItem="True"
在DataGrid中
,如果ItemsSources是相同的,可以解決你的問題。 (不知道這是@dkozl的意思)我原本以爲他們是不同的。
他們共享相同的'ItemsSource'嗎?如果選擇「DataGrid」中的項目,那麼選擇項目就可以了。將在另一個「DataGrid」(同步選定項目)中自動選擇。 – dkozl
它們共享相同的ItemSource,但我不熟悉同步的選定項目。可以你進一步解釋? – ExcelNoobie25