我正在使用以下方式打开模态窗口:
public void PropertiesTablesButtonClicked(object sender, RoutedEventArgs e)
{
Window _childWindow = new PropertiesTablesWindow();
// Assign MainWindow as the owner of this window, this will cause the MainWindow
// to become inactive and make the child window flash if the main window is clicked
_childWindow.Owner = App.Current.MainWindow;
_childWindow.ShowDialog();
}
是否有一种方法可以从PropertiesTablesWindow.xaml中绑定到主窗口的DataContext?主窗口DataContext有一个属性EditMode,它让我知道程序是否处于编辑模式,这反过来将用于使子窗口上的DataGrid为只读或可编辑,如下所示:
<DataGrid Name="PropertiesDataGrid"
ItemsSource="{Binding PropertiesDataView, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False"
CanUserAddRows="False"
MaxHeight="200"
IsReadOnly="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Application}}, Path=DataContext.EditMode,
UpdateSourceTrigger=PropertyChanged,
Converter={StaticResource NegatedStringComparisonToBooleanConverter}, ConverterParameter=Admin}">
我尝试过AncestorType of Window和Application,但显然这些都不起作用。
答案 0 :(得分:0)
不同的窗户有不同的视觉树木。这就是你使用绑定失败的原因。但是为什么不在所有者窗口的datacontext上设置模态窗口的datacontext?它会做的伎俩。当然,您也可以构建一个介体来存储上下文,但第一个解决方案非常简单。