WPF Привязка визуальной кисти к другому окну - PullRequest
5 голосов
/ 04 апреля 2010

Мне нужен прямоугольник в окне настроек, чтобы отобразить уменьшенную версию главного окна. Это нерабочий код, который у меня есть сейчас. Можно ли делать то, что я хочу делать?

<Rectangle.Fill>
<VisualBrush Stretch="Uniform" Visual="{Binding ElementName=local:MainWindow}" />
</Rectangle.Fill>

1 Ответ

7 голосов
/ 04 апреля 2010

Да, но не в чистом XAML и не с использованием ElementName. Вместо этого вам нужно будет передать ссылку на главное окно в окно настроек. Затем вы можете привязать VisualBrush.Visual к этой ссылке.

В качестве упрощенного примера, при создании окна настроек вы можете установить его DataContext в главное окно:

// MainWindow.xaml.cs
SettingsWindow w = new SettingsWindow { DataContext = this };
w.Show();

Тогда в окне настроек вы можете получить доступ к главному окну как {Binding} (потому что теперь главное окно - это DataContext окна настроек, а {Binding} относится к контексту данных):

<!-- SettingsWindow.xaml -->
<Rectangle.Fill>
  <VisualBrush Stretch="Uniform" Visual="{Binding}" />
</Rectangle.Fill>

На практике вы, вероятно, не захотите передавать объект главного окна как DataContext, потому что это слишком тупой инструмент, но, надеюсь, это даст вам идею.

...