WPF Привязка визуальной кисти к другому окну
Мне нужен прямоугольник в моем окне настроек, чтобы отобразить уменьшенную версию основного окна. Это нерабочий код, который у меня есть сейчас. Можно ли сделать то, что я хочу сделать?
<Rectangle.Fill>
<VisualBrush Stretch="Uniform" Visual="{Binding ElementName=local:MainWindow}" />
</Rectangle.Fill>
1 ответ
Да, но не в чистом XAML и не используя ElementName. Вместо этого вам нужно будет передать ссылку на главное окно в окно настроек. Затем вы можете привязать VisualBrush.Visual к этой ссылке.
В качестве упрощенного примера, при создании окна настроек вы можете установить его DataContext в главное окно:
// MainWindow.xaml.cs
SettingsWindow w = new SettingsWindow { DataContext = this };
w.Show();
Затем в окне настроек вы можете получить доступ к главному окну как {Binding}
(потому что MainWindow теперь является DataContext окна настроек, и {Binding}
относится к DataContext):
<!-- SettingsWindow.xaml -->
<Rectangle.Fill>
<VisualBrush Stretch="Uniform" Visual="{Binding}" />
</Rectangle.Fill>
На практике вы, вероятно, не захотите передавать объект главного окна как DataContext, потому что это слишком тупой инструмент, но, надеюсь, это даст вам идею.